这是在学校里练习和考二级中的精选,非常有用,很高兴和大家分享,欢迎下载!
1、 请编写函数fun,函数的功能是:在字符串中所有数字字符前加一个$字符。
例如,输入:A1B23CD45,则输出为:A$1B$2$3CD$4$5。
注意:部分源程序给出如下。 #include
/*注:该题用while()循环来控制原字符串从头走到尾,在走动过程中判断是当前字符是否是数字,若是则在新串中先连一个'$'然后再连原字符,否则直接连原字符。一定要注意指针和下标的变化。最后要把新串拷贝到s所指的地址中,注意不能用s=a;若用了,则实参数组还是原字符串。*/ void fun( char *s) {char a[100]; int i=0; while(*s)
if(*s>='0'&&*s<='9') {a[i++]='$';a[i++]=*s++;} else a[i++]=*s++; a='\0';
strcpy(s,a); }
main()
{ char s[80];
printf("enter a string:"); scanf("%s", s); fun(s);
printf("the result: %s\n", s); }
2、 写程序,实现矩阵(3行3列)的转置(即行列互换)。
例如,输入一面的矩阵:
程序输出:
试题程序:
#include #include
/*这题的关键在于进行行列下标转换的算法,由矩阵的对称性我们不难看出在进行行列 互换时a[j]在好是与a[j][i]互换,因而只要我位让程序走完矩阵的左上角即可(用
for(i=0;i<2;i++)再套for(j=i+1;j<3;j++)来完成左上角的走动。*/ int fun(int array[3][3]) { int i,j,t;
for(i=0;i<2;i++) for(j=i+1;j<3;j++)
{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;} }
main() { int i,j; int
array[3][3]={{100,200,300},{400,500,600},{700,800,900}}; clrscr();
for(i=0;i<3;i++) {for(j=0;j<3;j++)
printf("%7d",array[i][j]); printf("\n"); }
fun(array);
printf("Converted array:\n"); for(i=0;i<3;i++) {for(j=0;j<3;j++)
printf("%7d",array[i][j]); printf("\n");}} 3、 请编一个函数fun(int *a,int n,int *odd,int *even),函数的功能是分别求出数组中所有奇数之和以及所有偶数之和。形参n给了数组中数据的个数:利用指针odd返回奇数之和,利用指针even返回偶娄这和。
例如:数组中的值依次为:1,8,2,3,11,6;则利用指针odd返回奇数之和24;利用指针even返回偶数之和8。 试题程序。
#include #include #define N 20
/*注:该题的算法是:用for()循环一步一步地找元素,用if(!a[i]%2)来判断是否是奇