C习题集 (9)

凉情凉心 分享 2020-06-22 下载文档

…、x变成y、y变成z、z变成a)输出,用条件编译方法实现以上选择。 #include #define MAX 80 #define SWITCH 1 void main()

{ char str[MAX]; int i=0;

printf(\请输入文本行:\\n\ #if(SWITCH)

while(str[i]!='\\0')

if(str[i]>='a'&&str[i]<='z')

if(str[i]=='z')str[i]='a'; else str[i]++; i++; #endif

printf(\ }

12. 编写函数,处理n行n列维数组:将每一行的元素同除以该行上绝对值最大的元素。 #include \ #include \

void div(float** a,int n) { int i,j; float x; for(i=0;i

for(j=1;jfabs(x)) x=*(*(a+i)+j); for(j=0;j

return; }

void main() //函数引用示例

{ float b[3][3]={{1,2,3},{4,5,6},{7,8,9}}; int i,j; float* c[3]; for(i=0;i<3;i++) c[i]=b[i]; div(c,3); for(i=0;i<3;i++) {

for(j=0;j<3;j++) printf(\ } }

2n

13. 编写函数,求任意阶多项式 a0+a1X+a2X+...+anX的值并返回多项式的值。 #include \

float f1(float* a,float x,int n) { int i; float t=1,y=0;

for(i=0;i

35

void main() // 函数引用示例 { float b[4]={1,2,3,4};

printf(\ }

14. 设计一个函数,使给出一个数的原码,能得到该数的补码。

#include // 假定sizeof(int)为2;

unsigned int getbit(unsigned int value) // 第1位为0表示正数的原码, { if(value>>15) return (value^0x7fff)+1; // 其补码即其原码;若value else return value; // 右移15位后为1,表示value是负数的原码,负数 } // 的补码为原码按位取反(第1位不变)后加1。 void main()

{ unsigned int y=0x800c,k; // -12的原码为(1000000000001100)2=(800c)16 k=getbit(y); // 其反码为(1111111111110011)2

printf(\其补码为(1111111111110100)2=(fff4)16 }

15. 编写函数,求m行、n列的二维数组全体元素中负数的个数。 #include

int sum(float **a,int m,int n) { int i,j; int y=0;

for(i=0;i

void main() // 函数引用示例

{ float b[2][3]={{-1,2,-3},{4,-5,-6}}; int i; float* c[2]; for(i=0;i<2;i++) c[i]=b[i]; printf(\ }

16. 编写函数,返回在一个整数组中出现次数最多的数及其出现次数。 #include

void fun(float *a,int n,int *k,float *x) { int i,j,y; *k=0;

for(i=0;i

for(j=0;j*k) { *k=y; *x=*(a+i); } }

return; }

void main() // 函数引用示例

{ float c[10]={0,4,2,4,3,2,4,-3,1.5,7.6},t; int m;

fun(c,10,&m,&t); // 若说明 float *t; int *m;

36

printf(\元素%f出现次数为%d\\n\引用为 fun(c,10,m,t); 将产生 } // 悬挂指针的错误,即t、m不只指向确定的存储单元。

17.编一个程序,打入月份号,输出该月的英文月名,要求用指针数组处理。 #include void main()

{ static char *month_name[12]={\ \ int n;

printf(\请输入月份号:\ if(n<1||n>12) printf(\月份号输入错误!\\n\

else printf(\月的英文表示是%s\\n\ }

18.编写递归函数,将输入的以“?”结束的字符串按与输入相反的顺序输出。 #include void pline() { char ch;

if((ch=getchar())!='?') { pline(); putchar(ch); } return; }

void main() // 函数引用示例

{ pline(); printf(\ 19. 编写函数,在n个元素的一维数组中,统计比相邻元素大的数组元素个数并将统计数返回(不考虑a[0]和a[n-1]),要求以指针变量而不是数组名作参数。 #include

int num(float *x,int n) { int i,k=0;

for(i=1;i*(x+i-1)&&*(x+i)>*(x+i+1)) k++; return k; }

void main() // 函数引用示例 { float a[10]={1,3,4,2,6,7,12,5,9,8}; printf(\ }

20. 编写函数,在n个元素的一维数组中,找出最大值、最小值并传送到调用函数。 #include

void num(float *b,int n,float *max,float *min) { *max=*b; *min=*b;

for(int i=1;i

37

if(*(b+i)>*max) *max=*(b+i); if(*(b+i)<*min) *min=*(b+i); }

return; }

void main() // 函数引用示例

{ float a[10]={1,3,4,2,6,7,12,5,9,8},x,y;

num(a,10,&x,&y); printf(\最大值为%.f,最小值为%.f。\\n\ }

21. 编写一个函数,统计m行n列二维数组中有多少个正数、多少个负数,多少个零,并

返回统计结果。

#include

void sub(float** a,int m,int n,int *fs,int *lin,int *zs) { int i,j; *fs=*lin=*zs=0;

for(i=0;i

else if(*(*(a+i)+j)==0) (*lin)++; else (*zs)++; return; }

void main() // 函数引用示例

{ float b[5][3]={{-1,5,2},{3,0,-2},{0,-3,5},{4,7,-8},{3,4,5}},*c[5]; int i,k1,k2,k3;

for(i=0;i<5;i++) c[i]=b[i]; sub(c,5,3,&k1,&k2,&k3); printf(\负数%d个,零%d个,正数%d个。\\n\ }

22. 编写函数,在给定的一行以‘.’结束的字符中,找出最长的单词并输出。 #include void find(char *str)

{ char *p1,*p2,*p3; int k1=0,k2=0; // k1为最长串的长度,初值为0。 p1=p2=p3=str; // p3指向最长串首字符,p1指向当前处理串首字符, while(*p2!='.') // p2为移动指针,*p2为空格表示查找到单词尾部。 if(*p2!=' ') { k2++; p2++; }

else if(k2>k1) { p3=p1; p1=++p2; k1=k2; k2=0; } else { k2=0; p1=++p2; }

for(k2=0;k2<=k1;k2++) printf(\ printf(\ }

void main() // 函数引用示例 { char a[40]; int i=0;

while((a[i++]=getchar())!='.'); find(a); }

38

23. 编写函数print,打印一个学生的成绩数组,该数组中有若干个学生的数据记录,每个记录包括num,name,score[3]。 #include

struct student { char num[7],name[9];int score[3];}; // 尾部分号不得遗漏 void print(struct student* s,int n)

{ int i; // 运算符‘*’、‘&’的优先级均低于运算符‘.’ for(i=0;i

void main()

{ struct student t[4]; int i; for(i=0;i<4;i++)

scanf(\ &t[i].score[1],&t[i].score[2]); print(t,4); }

24. 把文本文件d1.dat复制到文本文件d2.dat中,要求仅复制d1.dat中的英文字符。 #include void main()

{ FILE *fpd1,*fpd2; char ch;

fpd1=fopen(\ while(fscanf(fpd1,\

if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') fprintf(fpd2,\ fclose(fpd1); fclose(fpd2); }

25. 编程,把文本文件d1.dat复制到d2.dat(其中空格字符不复制)。 #include void main()

{ FILE *fpd1,*fpd2; char ch;

fpd1=fopen(\ while(fscanf(fpd1,\ if(ch!=' ') fprintf(fpd2,\ fclose(fpd1); fclose(fpd2); }

26. 编程,把文本文件d1.dat复制到d2.dat(其中大写英文字母要转换为小写字母)。 #include void main()

39


C习题集 (9).doc 将本文的Word文档下载到电脑

下一篇:XX安全监督管理局行政处罚自由裁量权 - 图文

相关推荐
相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xxxxxx QQ:xxxxxx