计算机二级C语言的注意事项及相应真题-2-程序修改

news2024/11/17 5:51:17

目录

    • 11.找出n的所有因子,统计因子的个数,并判断n 是否是”完数”
    • 12.计算s所指字符串中含有t所指字符串的数目
    • 13.将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数
    • 14.根据整型形参m的值,计算如下公式的值
    • 15.从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中
    • 16.将形参dt0指向的具有*n0个数据的数组中,所有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数
    • 17.将s所指字符串中的字母转换为按字母序列的后续字母
    • 18.在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分
    • 19.将字符串s1和s2交叉合并形成新字符串s3
    • 20.当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串

11.找出n的所有因子,统计因子的个数,并判断n 是否是”完数”

给定程序MODI1. C中,函数fun的功能是:找出n的所有因子,统计因子的个数,并判断n

是否是”完数”。当一个数的因子之和恰好等于这个数本身时,就称这个数为”完数”。

例如: 6的因子包括1、2、3,而6=1+2+3,所以6是完数。

如果是完数,函数返回值为1,否则函数返回值为0。

数组a中存放的是找到的因子,变量k中存放的是因子的个数。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h>
int  fun(int  n, int  a[], int  *k)
{   int  m=0, i, t;
    t = n;
/**********found**********/
    for( i=0; i<n; i++ )//这个for循环是找因子,找因子,因子怎么可以是0,应该从1开始
       if(n%i==0)//筛出因子存入数组a
       {  a[m]=i;  m++;  t=t - i;  }
/**********found**********/
    k=m;//k是指针,这样赋,等于是赋给地址了,得要加上解引符*
/**********found**********/
    if ( t=0 )  return  1;//单等=是赋值,双等是等于
    else  return  0; 
}
main()
{  int  n , a[10], flag, i, k;
   printf("请输入一个整数:    ");  scanf("%d",&n);
   flag = fun( n, a, &k );
   if(flag)
   {  printf(" %d 是完数,其因子是:  ", n);
      for(i=0;i<k;i++)   printf("  %d ", a[i]);
      printf("\n");
   }
   else    printf(" %d 不是完数.\n ", n );
   getchar();
}

解题思路:
不是很难,注释就已经解释的差不多了

答案:

#include <stdio.h>
int  fun(int  n, int  a[], int  *k)
{   int  m=0, i, t;
    t = n;
/**********found**********/
    for( i=1; i<n; i++ )
       if(n%i==0)
       {  a[m]=i;  m++;  t=t - i;  }
/**********found**********/
    *k=m;
/**********found**********/
    if ( t==0 )  return  1;
    else  return  0; 
}
main()
{  int  n , a[10], flag, i, k;
   printf("请输入一个整数:    ");  scanf("%d",&n);
   flag = fun( n, a, &k );
   if(flag)
   {  printf(" %d 是完数,其因子是:  ", n);
      for(i=0;i<k;i++)   printf("  %d ", a[i]);
      printf("\n");
   }
   else    printf(" %d 不是完数.\n ", n );
   getchar();
}

测试:

请输入一个整数:    6
 6 是完数,其因子是:    1   2   3 

12.计算s所指字符串中含有t所指字符串的数目

给定程序modi1.c中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char  *s,  char  *t)
{  int  n;
   char  *p , *r;
   n=0;
   while ( *s )//遍历s所指字符串
   {  p=s;//指针p指向s所指字符串
/*********found**********/
      r=p;//指针r应该指向t所指字符串,这里应该是r=t;
      while(*r)//遍历t指向字符串进行比对,是否含有t指向字符串
        if(*r==*p) {  r++;  p++;  }
        else  break;
/*********found**********/
      if(*r= 0)//运行到这里如果此时r指向空,则含有t所指字符串数目递增
        n++;
      s++;//指针s后移
   }
   return  n;//返回含有t所指字符串数目
}
main()
{  char  a[N],b[N];    int   m;
   printf("\nPlease enter string a : "); gets(a);
   printf("\nPlease enter substring b : "); gets( b );
   m=fun(a, b);
   printf("\nThe result is :  m = %d\n",m);
  getchar();
}

解题思路:
这些题的代码都挺经典的,不要只顾着答对,也要理解代码的思路

答案:

#include <stdio.h>
#include <string.h>
#define    N     80
int  fun(char  *s,  char  *t)
{  int  n;
   char  *p , *r;
   n=0;
   while ( *s )
   {  p=s;
/*********found**********/
      r=t;
      while(*r)
        if(*r==*p) {  r++;  p++;  }
        else  break;
/*********found**********/
      if(*r== '\0')
        n++;
      s++;
   }
   return  n;
}
main()
{  char  a[N],b[N];    int   m;
   printf("\nPlease enter string a : "); gets(a);
   printf("\nPlease enter substring b : "); gets( b );
   m=fun(a, b);
   printf("\nThe result is :  m = %d\n",m);
  getchar();
}

测试:

Please enter string a : abcdabcdresd

Please enter substring b : abcd

The result is :  m = 2

13.将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数

给定程序modi1.c中,函数fun的功能是:将一个由八进制数字组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位8进制数字。

例如,若输入77777,则输出将是32767。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning (disable:4996)
int  fun( char *p )
{   int   n;
/**********found**********/
    n= *P-'o';//这个错误像误写一样,数字字符变为整型,应该减去字符0,但这个是o,还有p误写成了大写,c语言中变量都是区分大小写的
    p++;//第一个字符的值为n的初始值,所以p需要后移
    while( *p!=0 ) {//遍历字符串,八进制转十进制
/**********found**********/
     	n=n*8+*P-'o';//这个也是一样,0写成了o,这里p也写成了大写
	p++;//指针p后移
    }
    return  n;
}
main()
{   char   s[6];     int  i;   int   n;
    printf("Enter a string (Ocatal digits):  "); gets(s);
    if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }//题目说规定输入的字符串最多只能包含5位8进制数字,strlen()函数是返回字符串长度
    for(i=0; s[i]; i++)//单一个s[i]就等同于s[i]!='\0'
       if(s[i]<'0'||s[i]>'7')//如果不是八进制就会进入该if分支
       {  printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }//exit(0)可以理解为等同于return 0
    printf("The original string:  "); puts(s);
    n=fun(s);
    printf("\n%s is convered to integer number: %d\n\n",s,n);
    getchar();
}

解题思路:
不是很难,这个错误有点像是0写成了o一样,还有p误写成了大写一样,这个错误让我想起了一张图,虽然里面并没有这条:
在这里插入图片描述
给大伙欣赏下

答案:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#pragma warning (disable:4996)
int  fun( char *p )
{   int   n;
/**********found**********/
    n= *p-'0';
    p++;
    while( *p!=0 ) {
/**********found**********/
     	n=n*8+*p-'0';
	p++;
    }
    return  n;
}
main()
{   char   s[6];     int  i;   int   n;
    printf("Enter a string (Ocatal digits):  "); gets(s);
    if(strlen(s)>5){ printf("Error: String too longer !\n\n");exit(0); }
    for(i=0; s[i]; i++)
       if(s[i]<'0'||s[i]>'7')
       {  printf("Error: %c not is ocatal digits!\n\n",s[i]);exit(0); }
    printf("The original string:  "); puts(s);
    n=fun(s);
    printf("\n%s is convered to integer number: %d\n\n",s,n);
    getchar();
}

测试:

Enter a string (Ocatal digits):  77777
The original string:  77777

77777 is convered to integer number: 32767


14.根据整型形参m的值,计算如下公式的值

给定程序modi1.c中,函数fun的功能是:根据整型形参m的值,计算如下公式的值。
请添加图片描述

例如:若m中的值为:5,则应输出:0.536389。

请改正程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>

double fun ( int m )
{  double   y = 1.0 ;
   int  i ;
/**************found**************/
   for(i = 2 ; i < m ; i++)//可以看到题目中的公式分母是有m的,这里循环中的i就是题目中的分母
/**************found**************/
      y -= 1 /(i * i) ;//在程序语言中,分式必须分子是浮点类型,结果才会有小数,1改成浮点类型就是1.0
   return( y ) ;
}

main( )
{  int n = 5 ;

   printf( "\nThe result is %lf\n", fun ( n ) ) ;
  getchar();
}

解题思路:
主要考数据类型的运算,这里我想到了我碰到的选择题中的一个选项,1和1.0所占的字节不同,这句话是正确的,1是整型,而1.0是浮点型

答案:

#include <stdio.h>

double fun ( int m )
{  double   y = 1.0 ;
   int  i ;
/**************found**************/
   for(i = 2 ; i <= m ; i++)
/**************found**************/
      y -= 1.0 /(i * i) ;
   return( y ) ;
}

main( )
{  int n = 5 ;

   printf( "\nThe result is %lf\n", fun ( n ) ) ;
  getchar();
}

测试:


The result is 0.536389


15.从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中

给定程序MODI1. C中函数fun的功能是:从低位开始依次取长整型变量s中奇数位上的数,构成一个新数放在t中(注意:位置从0开始计算)。

例如:输入: 12345678, 则输出: 1357

输入: 123456789, 则输出: 2468

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h>
#pragma warning (disable:4996)
void fun (long s, long *t)
{   long sl = 10;
    s /= 10;//位置是从0开始的,0是偶数,去掉
/**********found**********/
    *t = s / 10;//位置0已经被去掉,现在是到了位置1,但要取一位,应该用取余
    while(s > 0) {
        s = s / 100;//s/100去掉两位,就到了下一个奇数位
/**********found**********/
        t = s % 10 * sl + t;//t是指针,单独一个t代表的仅仅是地址,*t代表的才是值,由于是从低位开始,所以是后面增加的值乘以权
/**********found**********/
        sl /= 10;//s1是权,应该是乘以10
    }
}

main()
{   long s, t;
    printf("\nPlease enter long number:");
    scanf("%ld", &s); fun(s, &t);
    printf("The result is: %ld\n", t);
}

解题思路:
注意,题目说了位置是从0开始的,如果不仔细看题目就去看代码,会很懵的

答案:

#include <stdio.h>
#pragma warning (disable:4996)
void fun (long s, long *t)
{   long sl = 10;
    s /= 10;
/**********found**********/
    *t = s % 10;
    while(s > 0) {
        s = s / 100;
/**********found**********/
        *t = s % 10 * sl + *t;
/**********found**********/
        sl *= 10;
    }
}

main()
{   long s, t;
    printf("\nPlease enter long number:");
    scanf("%ld", &s); fun(s, &t);
    printf("The result is: %ld\n", t);
}

测试:

Please enter long number:12345678
The result is: 1357

16.将形参dt0指向的具有*n0个数据的数组中,所有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数

给定程序MODI1. C中,函数fun的功能是:将形参dt0指向的具有*n0个数据的数组中,所

有不等于形参x的数据,重新存留在原数组中,并通过形参n0返回这些数据的个数。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h> 
#pragma warning (disable:4996)
void fun(int *dt0,int *n0,int x)
{
	int i,j;
/**********************found***********************/
	i=1;j=1;//可以看到下面i和j都是作为数组的下标来用的,数组的下标应该从0开始
  do
  { 
/**********************found***********************/
	  if(dt0[i]=x)//依据题意这里应该是筛出不等于形参x的数据
	  {
		  dt0[j]=dt0[i];//把筛出的数据赋在数组前面
		  j++;//j是不等于形参x的数据数
	  }
	  i++;
  }
  while(i<*n0);
/**********************found***********************/
return j;//这个函数是void类型的,是无返回值的,这里显然是要返回筛出的不等于形参x的数据的个数,题目已经给了提示,通过形参n0返回这些数据的个数
}
main()
{ 
	int d[10]={2,5,6,7,2,4,5,2,2,6},n=10,i;
	fun(d,&n,2);
	for(i=0;i<n;i++)
		printf("%d ",d[i]);
	printf("\n");
} 

解题思路:
题目要求的结果就是输出不等于形参x的数据,思路是把不等于形参x的数据放在数组的前面

答案:

#include <stdio.h> 
#pragma warning (disable:4996)
void fun(int *dt0,int *n0,int x)
{
	int i,j;
/**********************found***********************/
	i=0;j=0;
  do
  { 
/**********************found***********************/
	  if(dt0[i]!=x)
	  {
		  dt0[j]=dt0[i];
		  j++;
	  }
	  i++;
  }
  while(i<*n0);
/**********************found***********************/
*n0=j;
}
main()
{ 
	int d[10]={2,5,6,7,2,4,5,2,2,6},n=10,i;
	fun(d,&n,2);
	for(i=0;i<n;i++)
		printf("%d ",d[i]);
	printf("\n");
} 

测试:

5 6 7 4 5 6 


17.将s所指字符串中的字母转换为按字母序列的后续字母

给定程序modi1.c中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换为a),其它字符不变。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!

modi1.c:

#include <stdio.h>
#include <ctype.h>
void  fun (char  *s)
{
/**********found***********/
  while(*s!='@')//遍历字符串,应该是遍历到空时停止
  {  if(*s>='A' && *s<='Z' || *s>='a' && *s<='z')
     {  if(*s=='Z')  *s='A';
        else if(*s=='z')  *s='a';
        else              *s += 1;
     }
/**********found***********/
     (*s)++;//这里遍历字符串,显然应该是指针后移,地址自增才对,加了解引符*就变成值了,变成值自增了
  }
}
main()
{  char  s[80];
   printf("\n  Enter a string with length < 80.  :\n\n  "); gets(s);
   printf("\n  The  string :  \n\n  ");  puts(s);
   fun ( s );
   printf ("\n\n  The  Cords :\n\n  ");  puts(s);
   getchar();
}

解题思路:
主要考你对指针概念的理解

答案:

#include <stdio.h>
#include <ctype.h>
void  fun (char  *s)
{
/**********found***********/
  while(*s!='\0')
  {  if(*s>='A' && *s<='Z' || *s>='a' && *s<='z')
     {  if(*s=='Z')  *s='A';
        else if(*s=='z')  *s='a';
        else              *s += 1;
     }
/**********found***********/
     s++;
  }
}
main()
{  char  s[80];
   printf("\n  Enter a string with length < 80.  :\n\n  "); gets(s);
   printf("\n  The  string :  \n\n  ");  puts(s);
   fun ( s );
   printf ("\n\n  The  Cords :\n\n  ");  puts(s);
   getchar();
}

测试:


  Enter a string with length < 80.  :

  ZzAa1

  The  string :  

  ZzAa1


  The  Cords :

  AaBb1

18.在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分

给定程序MODI1. C中,函数fun的功能是:在有n名学生,2门课成绩的结构体数组std中,计算出第1门课程的平均分,作为函数值返回。

例如:主函数中给出了4名学生的数据,

则程序运行的结果为:第1门课程的平均分是: 76. 125000

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include  <stdio.h>
typedef  struct
{  char  num[8];
  double  score[2];
}STU ;
double fun(STU  std[], int  n)
{  int   i;
/**********found**********/
   double  sum ;//可以看到在后面的循环中sum是累加的,而不是赋值的,那就必须要赋个初值
/**********found**********/
   for(i=0; i<2 ; i++)//这个循环应该要累加上所有的学生,在main函数里可以看到有4名学生,传给了变量n
/**********found**********/
      sum += std[i].score[1]; //数组的下标都是从0开始的,0才是第一项
   return  sum/n;//返回平均值
}
main()
{  STU  std[ ]={ "N1001", 76.5,82.0 ,"N1002", 66.5,73.0, 
              "N1005", 80.5,66.0,"N1006", 81.0,56.0 };
   printf("第1门课程的平均分是:%lf\n", fun(std,4) );
   getchar();
}

解题思路:
难度不高,也没什么迷惑性的地方φ(゜▽゜*)♪

答案:

#include  <stdio.h>
typedef  struct
{  char  num[8];
  double  score[2];
}STU ;
double fun(STU  std[], int  n)
{  int   i;
/**********found**********/
   double  sum =0.0;
/**********found**********/
   for(i=0; i<n ; i++)
/**********found**********/
      sum += std[i].score[0]; 
   return  sum/n;
}
main()
{  STU  std[ ]={ "N1001", 76.5,82.0 ,"N1002", 66.5,73.0, 
              "N1005", 80.5,66.0,"N1006", 81.0,56.0 };
   printf("第1门课程的平均分是:%lf\n", fun(std,4) );
   getchar();
}

测试:

第1门课程的平均分是:76.125000


19.将字符串s1和s2交叉合并形成新字符串s3

给定程序MODI1. C中,函数fun将字符串s1和s2交叉合并形成新字符串s3,合并方法为:先取s1的第1个字符存入s3,再取s2的第1个字符存入s3,以后依次类推;若s1和s2的长度不等时,较长字符串多出的字符顺序放在新生成的s3后。

例如:当s1为: “123456789”,s2为: " abcdefghijk”时,

输出结果应该是: 1a2b3c4d5e6f7g8h9ijk

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include <stdio.h> 
#include <string.h> 
#pragma warning (disable:4996)
void fun( char *s1, char *s2, char *s3)
{   int i,j;
/**********************found***********************/
	for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 1)  
	{   	s3[j] = s1[i];   
		s3[j+1] = s2[i];   
	}    
	if (s2[i] != '\0')  
	{   	for(; s2[i] != '\0'; i++, j++)   
/**********************found***********************/
		     s3[i] = s2[j];  
	}   
	else if (s1[i] != '\0')  
	{   for(; s1[i] != '\0'; i++, j++)       
			s3[j] = s1[i];
	}
/**********************found***********************/
	s3[j-1] = '\0';
}
void main() 
{  	char s1[128], s2[128], s3[255];  
	printf("Please input string1:"); 
	gets(s1);   
	printf("Please input string2:");  
	gets(s2);    
	fun(s1,s2,s3);
	printf("string:%s\n", s3);   
} 

解题思路:
有三个错误:
(1)

for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 1)  
//&&且,两个只要有一个不成立,就会停止,没有问题,j的自增出现了问题,两个字符串的合并方式是你存
//入一个字符,我在其后也存入一个字符,也就是说每次循环都会存入两个字符,倘若依题目这种循环方式,会
//出现如下情况:
/*
第一遍循环:
s3[0]=s1[0];
s3[1]=s2[0];
第二遍循环:
s3[1]=s1[1];
s3[2]=s2[1];
问题出现了,数组s2存入的字符在后续循环中被数组s1覆盖了,那要怎么做才会不被覆盖,因为每次都会存入两个字符,j每次递增加2不就好了,这样第二遍循环就会是:
s3[2]=s1[1];
s3[4]=s2[1];
*/

(2)

 s3[i] = s2[j];  //i和j都是在函数fun里的全局变量,在上面循环结束后,i是数组s1和s2循环结束时遍历到的下标,j是数组s3最后的下标

(3)

s3[j-1] = '\0';//j-1显然不对,应该是j

答案:

#include <stdio.h> 
#include <string.h> 
#pragma warning (disable:4996)
void fun( char *s1, char *s2, char *s3)
{   int i,j;
/**********************found***********************/
	for(i = 0, j = 0; (s1[i] != '\0') && (s2[i] != '\0'); i++, j = j + 2)  
	{   	s3[j] = s1[i];   
		s3[j+1] = s2[i];   
	}    
	if (s2[i] != '\0')  
	{   	for(; s2[i] != '\0'; i++, j++)   
/**********************found***********************/
		     s3[j] = s2[i];  
	}   
	else if (s1[i] != '\0')  
	{   for(; s1[i] != '\0'; i++, j++)       
			s3[j] = s1[i];
	}
/**********************found***********************/
	s3[j] = '\0';
}
void main() 
{  	char s1[128], s2[128], s3[255];  
	printf("Please input string1:"); 
	gets(s1);   
	printf("Please input string2:");  
	gets(s2);    
	fun(s1,s2,s3);
	printf("string:%s\n", s3);   
} 

测试:

Please input string1:123456789
Please input string2:abcdefghijk
string:1a2b3c4d5e6f7g8h9ijk

20.当奇数次调用时要求把字符串中的小写字母转换成大写字母,偶数次调用时按输入字符串的逆序输出字符串

给定程序MODI1. C中,调用fun函数输出字符串,

当奇数次调用时要求把字符串中的小写字母转换成大写字母,

偶数次调用时按输入字符串的逆序输出字符串。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。

MODI1. C:

#include   <stdio.h>
#include   <string.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun( char  *s )
{  int  i;
/**********************found***********************/
   Static  int  n = 1;   //static关键字不能大写,否则就失去了原来的意义
   if ( n++ %2 )
/**********************found***********************/
      for(i=0;i<=strlen(s);i++)    //最大数组下标应该是strlen(s)-1,这个循环多了一项
         printf("%c", islower(s[i]) ? toupper(s[i]) : s[i]);//islower()是判断小写字母,toupper()是转化为大写字母
   else
/**********************found***********************/
      for (i = strlen(s)-1; i>0; i--)   //这个循环又少了一项,数组最小下标应该是0
         printf("%c", s[i]);
}
main( )
{  int  i;
   char s[] = "Hello, C Programmer";
   for (i=0; i<5; i++) {  fun(s);    printf("\n");   }
}

解题思路:

static修饰符:
被static修饰的变量,生命周期会被延长,值被改变的话,会被保留

int islower(char c) :检查所传字符是否是小写字母

char toupper(char c):把小写字母转换为大写字母
如果 c 有相对应的大写字母,则该函数返回 c 的大写字母,否则 c 保持不变。返回值是一个可被隐式转换为 char 类型的 int 值。

答案:

#include   <stdio.h>
#include   <string.h>
#include   <ctype.h>
#pragma warning (disable:4996)
void fun( char  *s )
{  int  i;
/**********************found***********************/
   static  int  n = 1;   
   if ( n++ %2 )
/**********************found***********************/
      for(i=0;i<strlen(s);i++)    
         printf("%c", islower(s[i]) ? toupper(s[i]) : s[i]);
   else
/**********************found***********************/
      for (i = strlen(s)-1; i>=0; i--)   
         printf("%c", s[i]);
}
main( )
{  int  i;
   char s[] = "Hello, C Programmer";
   for (i=0; i<5; i++) {  fun(s);    printf("\n");   }
}

测试:

HELLO, C PROGRAMMER
remmargorP C ,olleH
HELLO, C PROGRAMMER
remmargorP C ,olleH
HELLO, C PROGRAMMER


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1429093.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot多种方法处理静态资源:设置并访问静态资源目录

&#xff5e;目录嗷&#xff5e; 静态文件application设置方法 配置详解编写配置优缺点 设置配置类方法 配置详解编写配置优缺点 总结 作者&#xff1a;Mintimate 博客&#xff1a;https://www.mintimate.cn Mintimate’s Blog&#xff0c;只为与你分享 静态文件 静态资源&…

Pycharm python用matplotlib 3D绘图显示空白解决办法

问题原因&#xff1a; matplotlib版本升级之后显示代码变了&#xff0c;修改为新的 # ax Axes3D(fig) # 原代码 ax fig.add_axes(Axes3D(fig)) # 新代码import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot3d import Ax…

pytest的常用插件和Allure测试报告

pytest常用插件 pytest-html插件 安装&#xff1a; pip install pytest-html -U 用途&#xff1a; 生成html的测试报告 用法&#xff1a; ​在.ini配置文件里面添加 addopts --htmlreport.html --self-contained-html 效果&#xff1a; 执行结果中存在html测试报告路…

前端工程化之:webpack1-8(loader)

一、loader webpack 做的事情&#xff0c;仅仅是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定的文件中。 更多的功能需要借助 webpack loaders (加载器)和 webpack plugins (插件)完成。 webpack loader &#xff1a; loader 本质上是…

【Java开发岗面试】八股文—微服务、消息中间件

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…

python 基础知识点(蓝桥杯python科目个人复习计划32)

今日复习内容&#xff1a;基础算法中的位运算 1.简介 位运算就是对二进制进行操作的运算方式&#xff0c;分为与运算&#xff0c;或运算&#xff0c;异或运算&#xff0c;取反&#xff0c;左移和右移。 &#xff08;1&#xff09;与运算 xyx&y000010100111 (2)或运算 …

OpenHarmony—Hap包签名工具

概述 为了保证OpenHarmony应用的完整性和来源可靠&#xff0c;在应用构建时需要对应用进行签名。经过签名的应用才能在真机设备上安装、运行、和调试。developtools_hapsigner仓 提供了签名工具的源码&#xff0c;包含密钥对生成、CSR文件生成、证书生成、Profile文件签名、Ha…

【安装指南】maven下载、安装与配置详细教程

&#x1f33c;一、概述 maven功能与python的pip类似。 Apache Maven是一个用于软件项目管理和构建的强大工具。它是基于项目对象模型的&#xff0c;用于描述项目的构建配置和依赖关系。以下是一些关键的 Maven 特性和概念&#xff1a; POM&#xff08;Project Object Model&…

MATLAB知识点:矩阵的拼接和重复

​讲解视频&#xff1a;可以在bilibili搜索《MATLAB教程新手入门篇——数学建模清风主讲》。​ MATLAB教程新手入门篇&#xff08;数学建模清风主讲&#xff0c;适合零基础同学观看&#xff09;_哔哩哔哩_bilibili 节选自第3章 3.3.4 矩阵的拼接和重复 有时候我们需要对多个矩…

云原生Kubernetes: Ubuntu 安装 K8S 1.23版本(单Master架构) 及故障恢复

目录 一、实验 1.环境 2.安装 Ubuntu 3.连接Ubuntu 4.master节点安装docker 5.node节点安装docker 6.master节点安装K8S 7.添加K8S工作节点 8.安装网络插件calico 9.故障 10.故障恢复 11.测试k8s网络和coredns 二、问题 1.Ubuntu如何修改镜像源 2.Ubuntu和Windo…

KAFKA节点故障的容错方案

KAFKA节点故障的容错方案 1. broker启动加载逻辑1.1 日志组成和分析1.2 snapshot文件1.3 broker启动流程1.4 LogManager的初始化和启动过程 2. controller高可用1.1 选主逻辑1.2 HA切换1.3 controller的职责 3. partition高可用3.1 ISR列表3.1 选举Leader 4. 疑问和思考4.1 如果…

11:按键

按键 1、按键的相关知识2、独立按键3、CPU如何处理按健4、编程测试&#xff08;用LED1作为指示&#xff09;5 、编程测试&#xff08;用8个LED作为指示&#xff09; 1、按键的相关知识 分为独立按键和矩阵按键 2、独立按键 由图得独立按键右边接地&#xff0c;左边独立连接到…

正则表达式可视化工具regex-vis

什么是正则表达式 &#xff1f; 正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则字符串”&#xff0c;这个“规则字符串”用来表达对字符串的一种过滤逻辑。【百度百科】 正则表达式用简短…

题目: 有1234个数字, 组成多个互不相同且无重复数字的三位数? 都是多少?

lua脚本如下 最原始的解题方法 local str{} local i, j, k0, 0, 0 for i1, 4 do for j1, 4 do for k1, 4 do if i~j and i~k and j~k then str[#str1]i..j..k end end end end print("组成的数有"..#str) print(table.unpack(str)) 运行的结果如下 组成的数有24 1…

【课程作业_01】国科大2023模式识别与机器学习实践作业

国科大2023模式识别与机器学习实践作业 作业内容 从四类方法中选三类方法&#xff0c;从选定的每类方法中 &#xff0c;各选一种具体的方法&#xff0c;从给定的数据集中选一 个数据集&#xff08;MNIST&#xff0c;CIFAR-10&#xff0c;电信用户流失数据集 &#xff09;对这…

微信小程序新手入门教程三:基础语法介绍

WXML&#xff08;WeiXin Markup Language&#xff09;是框架设计的一套标签语言&#xff0c;可以与各种组件相结合&#xff0c;进行页面构建。 一 常用标签 wxml的语法结构与我们熟悉的html很像&#xff0c;但在细节处略有不同&#xff0c;我们可以参考html标签对比记忆。wxm…

基于协同过滤的个性化电影推荐系统分析设计python+flask

本系统为用户而设计制作个性化电影推荐管理&#xff0c;旨在实现个性化电影推荐智能化、现代化管理。本个性化电影推荐自动化系统的开发和研制的最终目的是将个性化电影推荐的运作模式从手工记录数据转变为网络信息查询管理&#xff0c;从而为现代管理人员的使用提供更多的便利…

华为OD机试真题【日志首次上报最多积分】

1、题目描述 【日志首次上报最多积分】 日志采集是运维系统的的核心组件。日志是按行生成&#xff0c;每行记做一条&#xff0c;由采集系统分批上报。 如果上报太频繁&#xff0c;会对服务端造成压力;如果上报太晚&#xff0c;会降低用户的体验&#xff1b; 如果一次上报的…

京东物流基于 StarRocks 的数据分析平台建设

作者&#xff1a;京东物流 数据专家 刘敬斌 小编导读&#xff1a; 京东集团 2007 年开始自建物流&#xff0c;2017 年 4 月正式成立京东物流集团&#xff0c;截至目前&#xff0c;京东物流已经构建了一套全面的智能物流系统&#xff0c;实现服务自动化、运营数字化及决策智能化…

whale-quant 学习 part7:量化回测

量化回测 计算策略评估指标聚宽平台量化回测实践策略实现 参考 计算策略评估指标 使用数据为&#xff1a;贵州茅台&#xff08;600519.SH&#xff09;、工商银行&#xff08;601398.SH&#xff09;、中国平安&#xff08;601318.SH&#xff09;&#xff0c;策略基准是沪深300指…