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

目录

    • 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.mfbz.cn/a/366746.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

澄清TypeScript中的 `satisfies` 操作符

TypeScript 的 satisfies 运算符已经推出一段时间了&#xff0c;但它似乎仍然是一个可以用来澄清的混乱来源。 可以把 satisfies 看作是将类型赋给值的另一种方式。 在我们深入研究之前&#xff0c;让我们回顾一下如何赋值类型。 首先&#xff0c;有一个不起眼的“冒号注解”…

【BUG】golang gorm导入数据库报错 “unexpected type clause.Expr“

帮同事排查一个gorm导入数据报错的问题 事发现场 ck sql CREATE TABLE ods_api.t_sms_jg_msg_callback_dis (app_key String DEFAULT COMMENT 应用标识,callback_type Int32 DEFAULT 0 COMMENT 0送达&#xff0c;1回执,channel Int32 DEFAULT 0 COMMENT uid下发的渠道,mode…

基于FFT + CNN -Transformer时域、频域特征融合的电能质量扰动识别模型

目录 往期精彩内容&#xff1a; ​模型整体结构 1 快速傅里叶变换FFT原理介绍 第一步&#xff0c;导入部分数据&#xff0c;扰动信号可视化 第二步&#xff0c;扰动信号经过FFT可视化 2 电能质量扰动数据的预处理 2.1 导入数据 2.2 制作数据集 3 基于FFTCNN-Transform…

无心剑中译聂鲁达《喜欢你寂静如斯》

I Like for You to Be Still 喜欢你寂静如斯 Pablo Neruda 帕布罗聂鲁达 I like for you to be still: it is as though you were absent, and you hear me from far away and my voice does not touch you. It seems as though your eyes had flown away and it seems that…

专业139总分400+南昌大学811信号与系统考研经验电子信息与通信工程集成电路

今年专业课811信号与系统139分&#xff0c;总分400&#xff0c;顺利上岸南昌大学&#xff0c;回首这一年的复习&#xff0c;有很多经验想和大家分享&#xff0c;希望对大家复习会有一些帮助。专业课&#xff1a;139分&#xff0c;811信号与系统 主要参考书&#xff1a;《信号与…

第二证券:苹果Vision Pro出货在即 固态电池产业化前景渐明

sion Pro即将于2月2日正式在美国商场开始交给&#xff0c;苹果美国官网释出了Vision Pro的详细参数&#xff0c;与发布会介绍根本一致&#xff0c;依靠总计12个摄像头、5种传感器、职业顶尖的单眼4K分辨率Micro-OLED显示屏、M2与R1芯片&#xff0c;完成了当时商场上独一无二的沉…

TCP/IP协议以及TCP/IP邮件详细介绍

目录 1. TCP/IP 协议 2. 协议族 3. TCP - 传输控制协议 4. IP - 网际协议&#xff08;Internet Protocol&#xff09; 5. HTTP - 超文本传输协议(Hyper Text Transfer Protocol) 6. HTTPS - 安全的 HTTP&#xff08;HTTP Secure&#xff09; 7. SSL - 安全套接字…

Leetcode2856. 删除数对后的最小数组长度

Every day a Leetcode 题目来源&#xff1a;2856. 删除数对后的最小数组长度 解法1&#xff1a;哈希 分类讨论 假设数组 nums 中元素 x 出现次数最多&#xff0c;其出现次数为 maxCount。 分类讨论&#xff1a; 如果 2 * maxCount > n&#xff0c;其余所有 n − maxC…

Mars3d实现【按当前相机视域页在地球上投射视频】功能

通过mars3d实现按当前相机视域页在地球上投射视频进行视频投射效果&#xff1a; 相关代码&#xff1a; // 按当前相机投射视频 export function startDrawGraphic2() {const ellipsoid map.scene.globe.ellipsoidconst canvas map.scene.canvasconst pt1 map.camera.pickE…

FluxMQ:新一代的高性能MQTT代理服务器

FluxMQ&#xff1a;新一代的高性能MQTT代理服务器 前言 FLuxMQ是一款基于java开发&#xff0c;支持无限设备连接的云原生分布式物联网接入平台。FluxMQ基于Netty开发&#xff0c;底层采用Reactor3反应堆模型&#xff0c;具备低延迟&#xff0c;高吞吐量&#xff0c;千万、亿级…

ClickHouse基于数据分析常用函数

文章标题 一、WITH语法-定义变量1.1 定义变量1.2 调用函数1.3 子查询 二、GROUP BY子句&#xff08;结合WITH ROLLUP、CUBE、TOTALS&#xff09;三、FORM语法3.1表函数3.1.1 file3.1.2 numbers3.1.3 mysql3.1.4 hdfs 四、ARRAY JOIN语法&#xff08;区别于arrayJoin(arr)函数&a…

创建自己的Hexo博客

目录 一、Github新建仓库二、支持环境安装Git安装Node.js安装Hexo安装 三、博客本地运行本地hexo文件初始化本地启动Hexo服务 四、博客与Github绑定建立SSH密钥&#xff0c;并将公钥配置到github配置Hexo与Github的联系检查github链接访问hexo生成的博客 一、Github新建仓库 登…

完整的 HTTP 请求所经历的步骤及分布式事务解决方案

1. 对分布式事务的了解 分布式事务是企业集成中的一个技术难点&#xff0c;也是每一个分布式系统架构中都会涉及到的一个东西&#xff0c; 特别是在微服务架构中&#xff0c;几乎可以说是无法避免。 首先要搞清楚&#xff1a;ACID、CAP、BASE理论。 ACID 指数据库事务正确执行…

小程序中picker多列选择器

需求&#xff1a;实现类似省市联动的效果&#xff0c;选择第一列后&#xff0c;第二列数据变化 html部分: <view class"section"><view>多列选择器</view><picker mode"multiSelector" bindchange"bindMultiPickerChange"…

大模型实践笔记(1)——GLM-6B实践

目录 在Ubuntu上的配置Git Large File Storage 安装Git LFS&#xff1a; 设置Git LFS&#xff1a; 使用Git LFS&#xff1a; 安装GLM-6B 环境依赖 ChatGLM2-6B介绍 配置GLM 下载代码 构建环境 安装依赖 本地部署 网页UI 很多模型在hugging face上面&#xff0c;…

Pudgy Penguins NFT 概览与数据分析

作者&#xff1a;stellafootprint.network 数据来源&#xff1a;Pudgy Penguins NFT Collection Dashboard “胖企鹅” Pudgy Penguins NFT 系列是由 8,888 个独特的企鹅头像组成的以太坊区块链项目。这个 NFT 项目能否在 2024 年达到发展的高峰&#xff1f; 关于 Pudgy Pe…

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

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

12.scala下划线使用总结

目录 概述实践变量初始化导包引入方法转变为函数用户访问Tuple元素简化函数参数传递定义偏函数变长参数 结束 概述 实践 变量初始化 在Scala中&#xff0c;变量在声明时需要显式指定初始值。可以使用下划线为变量提供初始值&#xff0c;但这种语法仅限于成员变量&#xff0c;…

IDEA反编译Jar包

反编译步骤 使用IDEA安装decompiler插件 找到decompiler插件文件夹所在位置&#xff08;IDEA安装路径/plugins/java-decompiler/lib &#xff09;&#xff0c;将需要反编译的jar包放到decompiler插件文件夹下&#xff0c;并创建一个空的文件夹&#xff0c;用来存放反编译后的…

前端玩Word:Word文档解析成浏览器认识的HTML

前言 领导跟富文本编辑器杠上啦&#xff0c;领导有一个类似于某雀导入Word文档&#xff0c;解析内容后渲染到编辑器编辑的需求。某雀功能效果如下&#xff1a; 怎么搞定呢&#xff1f;自己写一个解析器&#xff1f; 本文分享Word文件转换成浏览器认识的HTML实战经验。 什么是…
最新文章