c语言课后习题第7章函数

合集下载

C语言程序设计第四版_谭浩强7章

C语言程序设计第四版_谭浩强7章

➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量

【C语言】第七章作业

【C语言】第七章作业
修改源程序,把primer函数的定义放在main函数 之后,编译程。出现什么问题?如何修改?
如果要求输出100~200之间的素数,如何修改 main函数。
3.main函数实现
int main() { int i;
printf("100~200之间的素数有:"); for(i=100;i<=200;i++) if (primer(i)) printf("%d ",i);
{ printf("请输入一个大于2的整数:"); scanf("%d",&m);
} flag=primer(m); if (flag) printf("%d是素数。\n",m); else printf("%d不是素数。\n",m); return 0; }
3.运行程序
输入测试数据:17 输入测试数据:34 输入测试数据:2 输入测试数据:1 输入测试数据:0 分别测试程序的正确性。
convert(i); }运行结果是什么?
最小公倍数=(i*j)/最大公约数
1.最大公约数函数实现
int gongyue(int i,int j) { int t,r; if (j>i)
{t=i;i=j;j=t;} while( (r=i%j)!=0) {
i=j; j=r; } return(j); }
1.最小公倍数函数实现
int gongbei(int i,int j,int h) { return(i*j/h); }
9.运行程序
输入测试数据: I am No.201002,You are No.201003! 检测程序的正确性。 正确结果: 字母个数是:13 数字个数是:12 空格个数是:4 其它字符个数是:4

习题答案(7函数)《C语言程序设计》课后习题解答

习题答案(7函数)《C语言程序设计》课后习题解答
#include <stdio.h>
void main()
{int xyz(int i);
int i;
for (i=100;i<=200;i++)
if(xyz(i))
printf("%d\n",i);
}
int xyz(int i)
{int j=0;
if(i%5==0&&i%3!=0) j=1;
return j;
}
void triangle(int n)
{int i,j;
for(i=1;i<=n;i++)
{for(j=1;j<=i;j++)
printf("*");
printf("\n");
}
}
2.编写一个求1~n之间奇数和的函数,在main( )函数中输入n,然后调用该函数求1~n之间奇数和并输出。
#include <stdio.h>
scanf("%d",&a);
if(sushu(a)) printf("是素数");
else printf("不是素数");
}
int sushu(int a)
{ int i;int j=1;
for(i=2;i<=a-1;i++)
if(a%i==0) j=0;
return j;
}
4.在main( )函数中输入一个人的年龄和性别,女性退休年龄为55岁,男性退休年龄为60岁,编写一个函数根据年龄和性别判断一个人是工作还是退休,若工作,则输出“woking”,退休则输出“retired”。

c语言第7章函数练习题

c语言第7章函数练习题
3. 以下对 C语言函数的有关描述中,正确的是( )。 A. 调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B. C函数既可以嵌套定义又可以递归调用 C. 函数必须有返回值,否则不能使用函数 D. C程序中有调用关系的所有函数必须放在同一个源程序文件中
4. C语言程序中,当函数调用时( )。 A. 实参和形参各占一个独立的存储单元 B. 实参和形参共用一个存储单元 C. 可以由用户指定是否共用存储单元 D. 计算机系统自动确定是否共用存储单元
fun(int x,int y,int z)
{ z=x*x+y*y;}
main()
{
int a=31;
fun(5,2,a);
printf("%d",a);
}
A.0
B.29
30.下列程序执行后的输出结果是( )。
voidfunc1(int i);
voidfunc2(int i);
charst[]="hello,friend!";
printf("%d\n",x);
}
上面程序的输出结果是( )。
A.720
B.120
C.24
39.下面程序的输出是( )。
main()
{
intt=1;
fun(fun(t));
}
fun(inth)
{
staticinta[3]={1,2,3};
intk;
for(k=0;k<3;k++) a[k]+=a[k]-h;
B. 不同函数中,可以使用相同名字的变量
C. 形式参数是局部变量
D. 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效

c语言程序设计课后习题答案第7章

c语言程序设计课后习题答案第7章

#include<stdio.h>main(){int a[10],n,sum=0,i;float ave;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);sum=sum+a[i];}ave=1.0*sum/n;printf("ave=%.2f\n",ave);}/*练习7-2*/#include<stdio.h>main(){int a[10],n,i;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++){printf("第%d个:\n",i+1);scanf("%d",&a[i]);printf("倒序:\n");while(a[i]!=0){printf("%d",a[i]%10);a[i]=a[i]/10;}printf("\n");}}#include<stdio.h>main(){int a[5],x,i,k=0;printf("enter 5 ge zheng shu:\n");for(i=0;i<5;i++)scanf("%d",&a[i]);printf("enter x:\n");scanf("%d",&x);for(i=0;i<5;i++)if(a[i]==x){printf("xia biao wei : %d\n",i);k=1;}if(k==0)printf("Not Found\n");}/*练习7-4*/#include<stdio.h>main(){int a[10],n,i,k=0,x,max;printf("enter n:\n");scanf("%d",&n);printf("enter %d ge zheng shu:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);max=a[0];for(i=1;i<=n-1;i++)if(max<a[i]){max=a[i];k=i;}printf("max=%d xia biao=%d",max,k);x=a[n-1];a[n-1]=a[k];a[k]=x;printf("\n");for(i=0;i<n;i++)printf(" %d ",a[i]);printf("\n");}/*练习7-11*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;str[i]='\0';printf("再输入一个字符:\n");str[80]=getchar();for(j=0;j<=i-1;j++)if(str[80]==str[j])count++;printf("%c字符在字符串中出现的次数为:%d\n",str[80],count);for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}/*习题七1*/#include<stdio.h>main(){int x,y,n,a[10],i,min,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);min=0;for(i=1;i<n;i++)if(a[min]>a[i])min=i;max=0;for(i=1;i<n;i++)if(a[max]<a[i])max=i;x=a[min];a[min]=a[0];a[0]=x;y=a[max];a[max]=a[n-1];a[n-1]=y;for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七2*/#include<stdio.h>main(){int x,n,a[10],i,j,max;printf("输入n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++)scanf("%d",&a[i]);for(i=1;i<n;i++){ max=i-1;for(j=i;j<n;j++)if(a[max]<a[j])max=j;x=a[max];a[max]=a[i-1];a[i-1]=x;}for(i=0;i<n;i++)printf("%4d",a[i]);printf("\n");}/*习题七4*/#include<stdio.h>main(){int m,n,a[6][6],i,j,b[6]={0};printf("输入m:\n");scanf("%d",&m);printf("输入n:\n");scanf("%d",&n);printf("输入%d和%d的矩阵:\n",m,n);for(i=0;i<m;i++){for(j=0;j<n;j++){scanf("%d",&a[i][j]);b[i]=b[i]+a[i][j];}}printf("shu chu:\n");for(i=0;i<m;i++){for(j=0;j<n;j++)printf(" %d",a[i][j]);printf("\n");}printf("shu chu hang he :\n");for(i=0;i<m;i++)printf("%4d",b[i]);printf("\n");}/*习题7.6*/#include<stdio.h>main(){char str[80];int i,j;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("倒序输出:\n");for(j=i-1;j>=0;j--)putchar(str[j]);printf("\n");}/*新7.6*/#include<stdio.h>main(){int a[10],i,n;printf("输入整数n:\n");scanf("%d",&n);printf("输入%d个整数:\n",n);for(i=0;i<n;i++){scanf("%d",&a[i]);}printf("倒序输出:\n");for(i=0;i<n;i++){printf("%5d",a[n-1-i]);}printf("\n");}/*习题7.7*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出其中的大写辅音字母:\n");for(j=0;j<=i-1;j++)if(str[j]>='B'&&str[j]<='Z'&&str[j]!='E'&&str[j]!='I'&&str[j]!='O'&&str[j]!='U'){putchar(str[j]);count++;}printf("\n");printf("大写辅音字母数量为:%d\n",count);}/*习题7.8*/#include<stdio.h>main(){char str[80];int i,j,count=0;printf("输入一个以回车符结束的字符串:\n");i=0;while((str[i]=getchar())!='\n')i++;printf("输出相应交换后的字符串:\n");for(j=0;j<=i-1;j++)if(str[j]>='A'&&str[j]<='Z')str[j]=155-str[j];for(j=0;j<=i-1;j++)putchar(str[j]);printf("\n");}上文已完。

C语言课件第07章-自定义函数

C语言课件第07章-自定义函数

在主函数或其他函数中,我们可以使用y=sum();语句执行函数sum,并把 函数的值送给y,或者用printf("%d",sum());直接输出函数sum的值。
第7章 自定义函数
2. 有参函数的定义形式 如果一个函数,需要调用者提供原始数据才能执 行(如sqrt函数),则这种函数可以被定义成有 参函数。其定义形式如下:
第7章 自定义函数
下面我们定义一个函数,名叫 printStar,其功能就是专门输出 则,主函数代码可以简化为:
经过函数调用,程序的代码行大大缩水,且main 函数更清晰且可读性更好。
第7章 自定义函数
如果我们把printStar函数的代码放到d盘根目录 下的一个文本文件中,比如放到function.txt文 本文件中,其他的程序如果有需要,也完全可以 用#include <d:\function.txt>把有关内容包含 到对应程序文件中,在需要的时候调用printStar 函数即可 。 函数:函数就是一个用名字命名的独立的程序块( 子程序),能实现某些功能,可供本程序其他函数 ,或者另外一些程序的函数调用。
第7章 自定义函数
factorial 函数专门求n的阶乘
第7章 自定义函数
形式参数(形参):函数在声明(定义) 的时候,同时对函数所需要的参数的数量、类型做出 说明。这些参数的名字只是一种形式,只有在函数被 调用时,这些参数才能得到具体值,所以这些参数为 形式参数。比如,函数求阶乘函数中的n就是形式参 数。 实际参数(实参):一个有参函数在被调用的时候, 主调函数必须根据被调用函数形参(形式参数)的要 求,传递具体数据给被调用函数的形参,这些实际的 数据就叫做实际参数,也就是我们所说的实参。 实参是有具体值的,实参可以是常数,也可以是变量 。但在使用时必须有具体值。

《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

《C语言程序设计教程》(第三版)李凤霞 主编——第七章习题答案

习题七一、单项选择题1、以下程序的输出结果是()。

main(){int i,k,a[10],p[3];k=5;for(i=0;i<10;i++)a[i]=i; /*a: 0 1 2 3 4 5 6 7 8 9 */for(i=0;i<3;i++)p[i]=a[i*(i+1)]; /*p:0 2 6 */for(i=0;i<3;i++)k+=p[i]*2; /* k=5+4+12=21 */printf(“%d\n”,k);}A)20 B)21 C)22 D)232、以下正确的数组定义语句是()。

A)int y[1][4]={1,2,3,4,5}; B)float x[3][ ]={{1},{2},{3}}; C)long s[2][3]={{1},{1,2},{1,2,3}}; D)double t[ ][3]={0};3、以下程序段的输出结果是()。

main(){int m[3][3]={{1},{2},{3}}; m 1 0 0 n 1 2 3int n[3][3]={1,2,3}; 2 0 0 0 0 0printf(“%d\n”,m[1][0]+n[0][0]); 3 0 0 0 0 0printf(“%d\n”,m[0][1]+n[1][0]);}A)0 B)2 C)3 D)10 3 0 24、以下程序的输出结果是()。

main(){int i,x[3][3]={1,2,3,4,5,6,7,8,9}; 1 2 3for(i=0;i<3;i++)printf(“%d,”x[i][2-i]); 4 5 6} 7 8 9A)1,5,9 B)1,4,7 C)3,5,7 D)3,6,95、对以下程序从第一列开始输入数据:2473↙,程序的输出结果是()。

#include “stdio.h”main(){char c;while((c=getchar())!=’\n’){switch (c-‘2’){case 0:case 1:putchar(c+4);case 2:putchar(c+4);break;case 3:putchar(c+3);default:putchar(c+2);}}}A)668977 B}668966 C}66778777 D)66887666、不能正确为字符数组输入数据的是( )。

第七章(c语言谭版)函数

第七章(c语言谭版)函数

调用a

调用b

}
}
}
例: 用弦截法求方程的根。
x3–5x2+16x–80=0 方法如下: (1) 取两个不同点x1、x2,如果f(x1)和f(x2)符号相反, 则(x1,x2)区间内必有一个根。如果f (x1)与f (x2)同 符号,则应改变x1、x2,直到f (x1)、f (x2)异号为 止。注意x1、x2的值不应差太大,以保证(x1, x2) 区间只有一根。
float x1, x2; { int i; float x, y, y1; y1=f(x1); do { x=xpoint(x1, x2);
y=f(x);
if (y*y1>0) /*f(x)与f(x1)同符号。*/ {y1=y; x1=x;} else x2=x; } while (fabs(y)>=0.0001); return (x); }
个return.
返回值类型为函数类型。 一般return中的返
回值类型应与函数定义时的类型一致, 不一致时,
以函数定义类型为准。
5. 调用函数应对被调用函数的返回值类型作出说 明:(函数名相当于一变量,但应有所区别)
类型符 函数名( );
它不同于函数的定义(功能定义) 例: 求二实数之和 main ( ) { float add( ); float a, b, c;
hanoi(n, one, two, three)
表示n个盘子从one塔借助于two塔(空)移至three塔。 调用时塔用字符常量'A' ,' B ', ' C '表示。
§7.5 数组作为函数参数
分为两种情况: 1. 数组元素作为实参

C13第7章 函数(3)

C13第7章 函数(3)

例7-27 汉诺塔问题。
设A座上有n个盘子。 座上有n个盘子。 如果n 如果n为1时,即A座上只有一个盘子,则把它直接移到C座上 座上只有一个盘子,则把它直接移到C 否则,用下面三步完成任务: 否则,用下面三步完成任务: 第一步, 第一步,把A座上的n-1个盘子先利用C座移动到B座上。 座上的n 个盘子先利用C座移动到B座上。 第二步, 第二步,把A座上仅有的第n个盘子移动到C座上。 座上仅有的第n个盘子移动到C座上。 第三步,把B座上的n-1个盘子利用A座移动到C座上。 第三步, 座上的n 个盘子利用A座移动到C座上。
分析upstairs(4)的运行情况
upstairs(4) upstairs(3) + upstairs(2) upstairs(2) + upstairs(1)
Hale Waihona Puke 程序的输出为void main( ) { printf(“4阶楼梯有 种不同的走法 阶楼梯有%d种不同的走法 阶楼梯有 种不同的走法\n”, upstairs(4));}
例7-24
例7-25
编写一个递归函数isPalin判断字符数组中的字符串是 编写一个递归函数isPalin判断字符数组中的字符串是 isPalin 否为回文,是则返回1 不是返回0 否为回文,是则返回1,不是返回0。
例7-27
汉诺塔问题。
古代有一个梵塔,塔内有3个标示为A 古代有一个梵塔,塔内有3个标示为A、B、C的座,A座 的座, 上有5个大小不等的盘子,大的在下面,小的在上面, 上有5个大小不等的盘子,大的在下面,小的在上面,如 图7-8所示。现要求把5个盘子从A座移动到C座,每次只允 所示。现要求把5个盘子从A座移动到C 许移动一个盘子,在移动过程中可以利用B座,但是3个座 许移动一个盘子,在移动过程中可以利用B 但是3 上要始终保持大盘在下面,小盘在上面。 上要始终保持大盘在下面,小盘在上面。

C语言程序设计(第三版)谭浩强习题与答案 第七章

C语言程序设计(第三版)谭浩强习题与答案   第七章
printf("\n");}
7.6打印出以下杨辉三角形(要求打印出10行)。
1
11
121
1331
14641
15101051


main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
for(i=0;i<10;i++)
printf("%5d",a[i]);
}

main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{ i=i-1;
j=j+1;
if((i<1)&&(j>n))
{ i=i+2;
j=j-1;
}
else
{ Байду номын сангаасf(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;

C语言程序设计教程 第七章 课后习题参考答案

C语言程序设计教程 第七章 课后习题参考答案
}
}
}
void print(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%4d",a[i][j]);
}
printf("\n");
}
}
void sum(int a[][N],int b[][N],int m,int n)
print(a,size);
reverse(a,size);
printf("\n");
return 0;
}
void print(int a[],int n)
{
int i;
printf("原:\n");
for(i=0;i<n;i++)
{
printf("%-4d",a[i]);
}
printf("\n");
for(i=0;i<n;i++)
input(b,M,N);
print(b,M,N);
printf("A+B=\n");
sum(a,b,M,N);
return 0;
}
void input(int a[][N],int m,int n)
{
int i,j;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);

(完整版)答案第七章函数..

(完整版)答案第七章函数..

第七章函数一、选择题1.以下函数声明正确的是: C 。

(02~03第一学期试题)A) double fun(int x, int y) B) double fun(int x; int y)C) double fun(int x, int y) ; D) double fun(int x , y)2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。

(0级)A)地址传递;B)单向值传递;C)双向值传递;D)由用户指定传递方式3.以下关于C语言程序中函数的说法正确的是: B 。

(0级)A)函数的定义可以嵌套,但函数的调用不可以嵌套;B)函数的定义不可以嵌套,但函数的调用可以嵌套;C)函数的定义和调用均不可以嵌套;D)函数的定义和点用都可以嵌套。

4.以下正确的函数形式是: D 。

(1级)A)double fun(int x,int y) B)fun (int x,y){z=x+y;return z;} {int z;return z;}C)fun(x,y) D)double fun(int x,int y){int x,y ; double z; {double z;z=x+y; return z;} z=x+y; return z;}5.以下说法不正确的是: B 。

(1级)C 语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以是任意类型D)形参应与其对应的实参类型一致6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。

(0级)A) float型B) int 型C)long 型D)double 型7.以下错误的描述是 D 。

(0级)函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参8.若用数组名作为函数调用的实参,传递给形参的是 A 。

(0级)A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数9.以下正确的说法是 A 。

C语言练习题z(7章)jj

C语言练习题z(7章)jj

C语言练习题(7章)一、选择题1.若有定义和语句:int **pp,*p,a=10,b=20;pp=&p;p=&a;p=&b;printf("%d,%d\n",*p,**pp);则输出结果是:A) 10,20 B) 10,10 C) 20,10 D) 20,202.若有以下定义:char s[20]="programming",*ps=s;则不能代表字符o的表达式是A) ps+2B) s[2] C) ps[2] D) ps+=2; *ps3.若有以下定义和语句:char *s1="12345",*s2="1234"; printf("%d\n",strlen(strcpy(s1,s2)));则输出结果是A) 4B) 5 C) 9 D) 104.若有以下定义和语句: int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; 则不能表示a数组元素的表达式是A) *p B) a[10] C) *a D) a[p-a]5.下面程序的输出是main(){ char *s="121";int k=0, a=0, b=0;do {k++;if(k%2= =0) {a=a+s[k]-'0'; continue;}b=b+s[k]-'0';a=a+s[k]-'0';}while (s[k+1]);printf("k=%d a=%d b=%d\n",k,a,b);}A) k=3 a=2 b=3 B) k=3 a=3 b=2 C) k=2 a=3 b=2D) k=2 a=2 b=36.若有以下的定义:int a[]={1,2,3,4,5,6,7,88,9,10}, *p=a; 则值为3的表达式是A) p+=2; *(p++); B) p+=2;*++p; C) p+=3; *p++; D) p+=2;++*p;7.若有以下定义和语句,则对w数组元素非法引用是:int w[2][3],(*pw)[3];pw=w;A) *(w[0]+2) B) *(pw+1)[2]C) pw[0][0] D) *(pw[1]+2)8.以下程序的输出结果是#include<stdio.h>sub1(char a,char b){char c; c=a;a=b;b=c;}sub2(char* a,char b){char c; c=*a;*a=b;b=c;}sub3(char* a,char*b){char c; c=*a;*a=*b;*b=c;}main(){ char a,b;a='A';b='B';sub3(&a,&b);putchar(a);putchar(b);a='A';b='B';sub2(&a,b);putchar(a);putchar(b);a='A';b='B';sub1(a,b);putchar(a);putchar(b);}A) BABBAB)B) ABBBBA C) BABABA D) BAABBA9.设有如下定义, 若有p=&data;,则对data中的a域的正确引用是struct sk{int a;float b;}data,*p;A) (*p).data.a B) (*p).a C) p->data.a D) p.data.a10.以下对枚举类型名的定义中正确的是A) enum a={one,two,three}; B) enum a {one=9,two=-1,three};C) enum a={"one","two","three"}; D) enum a {"one","two","three"};11.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是:A) k=*p1+*p2; B) p2=k;C) p1=p2; D) k=*p1*(*p2);12.下列程序段的输出结果为:int arr[]={6,7,8,9,10}; int *ptr;ptr=arr; *(ptr+2)+=2;printf ("%d,%d\n",*ptr,*(ptr+2));A)8,10 B) 6,8 C) 7,9 D) 6,1013.执行以下程序段后,m的值为int a[2][3]={ {1,2,3},{4,5,6} };int m,*p; p=&a[0][0];m=(*p)*(*(p+2))*(*(p+4));A)15B) 14 C) 13 D) 1214.设有如下定义:int (*ptr)*(); 则以下叙述中正确的是A)ptr是指向一维组数的指针变量B) ptr是指向int型数据的指针变量C) ptr是指向函数的指针,该函数返回一个int型数据D) ptr是一个函数名,该函数的返回值是指向int型数据的指针15.有以下程序,输出结果是main(){ char a[]="programming", b[]="language";char *p1,*p2;int i;p1=a; p2=b;for(i=0;i<7;i++)if(*(p1+i)==*(p2+i)) printf("%c",*(p1+i));}A)gm B) rg C) or D) ga16.有以下程序,输出结果是int fun(int x,int y,int *cp,int *dp){ *cp=x+y; *dp=x-y; }main(){ int a, b, c, d;a=30; b=50;fun(a,b,&c,&d);printf("%d,%d\n", c,d);}A)50,30 B) 30,50 C) 80,-20D) 80,2017.以下程序运行后,输出结果是main(){ char *s=“abcde”;s+=2;printf("%ld\n",s);}A)cde B)字符c的ASCII码值C)字符c的地址D)出错18.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为#include<stdio.h>#include<string.h>func(char str[ ] ){ int num =0;while(*(str+num)!=‘\0’) num++;return(num);}main( ){char str[10],*p,*p=str;gets(p); printf("%d\n",func(p));}A)8 B)7 C)6 D)519.以下程序运行后,输出结果是#include<stdio.h>ss(char *s){ char *p=s;while(*p)p++;return(p-s);}main( ){ char *a="abded";int i;i=ss(a);printf("%d\n",i);}A)8 B)7 C)6 D)520.以下程序运行后,输出结果是main( ){ static char a[]="ABCDEFGH",b[]="abCDefGh";char *p1,*p2;int k;p1=a; p2=b;for(k=0;k<7;k++)if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));printf("\n");}A) ABCDEFG B)CDG C)abcdefgh D)abCDefGh21.以下程序执行后,a的值是main(){ int a,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;printf("%d\n",a);}A)4 B)1 C)0D)运行时出错,无定值22.以下程序运行后,输出结果是main(){char ch[2][5]={"693 ","825 "},*p[2];int i,j,s=0;for(i=0;i<2;i++) p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'0'&&p[i][j]<='9';j+=2)s=10*s+p[i][j]- '0';printf("%d\n",s);}A) 6385B) 22 C) 33 D) 69382523.以下程序运行后,输出结果是#include <stdio.h>#include <string.h>fun(char *w,int n){ char t,*s1,*s2;s1=w; s2=w+n-1;while(s1<s2){ t=*s1++;*s1=*s2--;*s2=t;}}main(){ char *p;p="1234567";fun(p,strlen(p));puts(p);}A)1234567 B)7654321 C)1711717D)717717124.以下程序运行后,如果从键盘上输入:book<回车>book<空格><回车>则输出结果是#include <string.h>main(){char a1[80],a2[80],*s1=a1,*s2=a2;gets(s1); gets(s2);if(!strcmp(s1,s2)) printf("*");else printf("#");printf("%d\n",strlen(strcat(s1,s2)));}A) *8 B)#9C)#6 D)*925.以下程序的输出结果是main( ){ int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf("%d ",p[i]);}A)5 2 B) 5 1 C) 5 3 D) 9 726.以下程序的输出结果是main( ){ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;int i;i=8;p=a+i;printf("%s\n",p-3);}A) 6 B) 6789C) '6' D) 78927.以下程序的运行结果是#include "stdio.h"main( ){int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12,};int *p=a+5, *q=NULL;*q=*(p+5);printf("%d %d \n",*p,*q);}A)运行后报错B) 6 6 C) 6 12 D) 5 528.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是A)p+1 B) a+1 C) a++D) ++p29.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是:A) *p=&a; scanf("%ld",p);B) p=(long *)malloc(8); scanf("%ld",p);C) scanf("%ld",p=&a); D) scanf("%ld",&a);30.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是int t[3][3], *pt[3], k;for (k=0;k<3;k++) pt[k]=&t[k][0];A) t[2][0] B) t[2][2] C) t[l][2]D) t[2][l]31.下面程序把数组元素中的最大值放入a[0]中,则if语句中的条件表达式应该是main( ){ int a[10]={6,7,2,9,1,10,5,8,4,3},*p=a,i;for(i=0;i<10;i++,p++)if(________) *a=*p;printf("%d",*a);}A) p>a B) *p>a[0]C) *p>*a[0] D) *p[0]> *a[0]32.以下程序的输出结果是main( ){ char ch[3][4]={"123","456","78"}, *p[3]; int i;for(i=0;i<3;i++) p[i]=ch[i];for(i=0;i<3;i++) printf("%s",p[i]);}A)123456780 B) 123 456 780 C) 12345678D) 14733.以下程序的输出结果是#include<stdio.h>int a[3][3]={1,2,3,4,5,6,7,8,9,},*p;main( ){ p=(int*)malloc(sizeof(int));f(p,a);printf("%d \n",*p);}f(int *s, int p[][3]){ *s=p[1][1]; }A)1 B) 4 C) 7 D) 534.以下程序的输出结果是main( ){ char *s="12134211"; int v[4]={0,0,0,0},k,i;for(k=0;s[k];k++){ switch(s[k]){ case '1':i=0;case '2':i=1;case '3':i=2;case '4':i=3;}v[i]++;}for(k=0;k<4;k++) printf("%d ",v[k]);}A) 4 2 1 1 B) 0 0 0 8C) 4 6 7 8 D) 8 8 8 835.以下程序的输出结果是#include<string.h>main( ){ char *p1,*p2,str[50]="ABCDEFG";p1="abcd"; p2="efgh";strcpy(str+1,p2+1); strcpy(str+3,p1+3);printf("%s",str);}A)AfghdEFG B) Abfhd C) Afghd D) Afgd36.若有以下定义和语句,则以下正确的叙述是:double r=99, *p=&r;*p=r;A)以上两处的*p含义相同,都说明给指针变量p赋值B) 在"double r=99, *p=&r;"中,把r的地址赋值给了p所指的存储单元C) 语句"*p=r;"把变量r的值赋给指针变量pD) 语句"*p=r;"取变量r的值放回r中37.若已定义:int a[ ]={ 0, l, 2, 3, 4, 5, 6, 7, 8, 9 },*p=a, i;其中0<=i<=9,则对a数组元素不正确的引用是A)a[p-a] B)*(&a[i]) C)p[i] D)a[10]38.下列程序执行后的输出结果是void func(int *a,int b[ ]){ b[0]=*a+6;}main(){int a, b[5];a=0; b[0]=3;func(&a, b); printf("%d\n", b[0]);}A) 6B) 7 C) 8 D) 939.下列程序执行后的输出结果是main(){int a[3][3],*p,i;p=&a[0][0];for( i= 0 ; i< 9 ; i++) p[i]= i+1;printf("%d\n",a[1][2]);}A)3 B)6C)9 D)随机数40.下列程序的输出结果是int b= 2;int func(int *a){b+=*a;return(b);}main(){ int a=2, res=2;res+=func(&a);printf("%d \n",res);}A) 4 B) 6C) 8 D) 1041.设 int b= 2;表达式( b << 2)/( b>>l)的值是A) 0 B) 2 C) 4 D) 842.若有以下调用语句,则不正确的fun函数的首部是A) void fun( int m,int x[ ]) B) void fun( int s, int h[41])C) void fun( int p, int *s) D) void fun(int n, int a)main( ){int a[50], n;fun( n,&a[9]);}43.设已有定义:char *st=”how are you”;下列程序段中正确的是A) char a[11],*p ; strcpy( p=a+l,&st[4]);B) char a[11]; strcpy(++a, st);C) char a[11]; strcpy(a,st);D) char a[],*p; strcpy(p=&a[l], st+2);44.有如下程序段,执行该程序段后,a的值为:int *p,a=10,b=1;p=&a; a=*p+b;A) 12 B) 11C) 10 D) 编译出错45.对于基类型相同的两个指针变量之间,不能进行的运算是A) < B) = C) +D) -46.以下函数返回a所指数组中最小值所在的下标值,在下划线处应填入的是fun(int *a, int n){ int i,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]<a[p])__________;return(p);}A) i=p B) a[p]=a[i] C) p=j D) p=i47.有如下说明,int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是A) *p+9 B) *(p+8)C) *p+=9 D) p+848.有如下程序,该程序的输出结果是main(){ char s[]="ABCD", *p;for(p=s+l; p<s+4; p++) printf ("%s\n",p);}A) ABCD B) A C) B D) BCDBCD B C CDCD C D DD D49.下列程序段的输出结果是void fun(int *x, int *y){ printf("%d %d", *x, *y); *x=3; *y=4;}main(){ int x=1,y=2;fun(&y,&x);printf("%d %d",x, y);}A)2 1 4 3B) 1 2 1 2 C) 1 2 3 4 D) 2 1 1 250.下列程序的输出结果是main(){ char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}A)非法B) a[4]的地址C)5 D)351.下列程序的运行结果是void fun(int *a, int *b){ int *k;k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, *y=&b;fun(x,y);printf("%d %d", a,b);}A)6 3 B) 3 6 C) 编译出错D) 0 052.下面程序的输出结果是main(){ int a[ ]={1,2,3,4,5,6,7,8,9,0,},*p;p=a;printf("%d\n",*p+9);}A) 0 B) 1 C) 10D) 953.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是A)i=*p; B) *p=*&j; C) i=&j; D) i=**p;54.以下定义语句中,错误的是A)int a[]={1,2}; B) char *a[3]; C) char s[10]="test"; D) int n=5,a[n];55.假定int类型变量占用两个字节,其有定义:int x[10]={0,2,4};,则数组x在内存中所占字节数是A)3 B) 6 C) 10 D) 2056.以下选项中,不能正确赋值的是A)char s1[10];s1="Ctest"; B) char s2[]={'C', 't', 'e', 's', 't'};C) char s3[20]="Ctest"; D) char *s4="Ctest\n"57.若定义:int a=511,*b=&a;, 则printf("%d\n",*b);的输出结果为A) 无确定值 B) a的地址C) 512 D) 51158.以下程序的输出结果是char cchar(char ch){ if(ch>='A'&&ch<='Z') ch=ch-'A'+'a';return ch;}main(){ char s[]="ABC+abc=defDEF",*p=s;while(*p){ *p=char(*p); p++;}printf("%s\n",s);}A)abc+ABC=DEFdef B) abc+abc=defdef C)abcaABCDEFdef D) abcabcdefdef59.以下程序调用findmax函数返回数组中的最大值,在下划线处应填入的是findmax(int *a,int n){ int *p,*s;for(p=a,s=a;p-a<n;p++)if ( ) s=p;return(*s);}main(){ int x[5]={12,21,13,6,18};printf("%d\n",findmax(x,5));}A)p>s B) *p>*s C) a[p]>a[s] D) p-a>p-s60.若指针p已正确定义,要使p指向两个连续的整型动态存储单元,不正确的语句是A)p=2*(int*)malloc(sizeof(int));B) p=(int*)malloc(2*sizeof(int));C) p=(int*)malloc(2*2); D) p=(int*)calloc(2,sizeof(int));61.以下不能正确进行字符串赋初值的语句是A) char str[5]="good!";B) char str[]="good!";C) char *str="good!"; D) char str[5]={ 'g', 'o', 'o', 'd'};62.若有以下定义和语句, 则对s数组元素的正确引用形式是int s[4][5],(*ps)[5];ps=s;A)ps+1 B) *(ps+3) C) ps[0][2] D) *(ps+1)+363.以下程序的输出结果是#include<stdio.h>#include<string.h>main(){ char b1[8]="abcdefg",b2[8],*pb=b1+3;while (--pb>=b1) strcpy(b2,pb);printf("%d\n",strlen(b2));}A)8 B) 3 C) 1 D) 764.若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是______。

C语言程序设计》课后习题详细答案

C语言程序设计》课后习题详细答案

《全国计算机等级考试二级教程——C语言程序设计》习题分析与详细解答第一章程序设计基本概念习题分析与解答1.1 【参考答案】EXE1.2 【参考答案】[1].C [2].OBJ [3].EXE1.3 【参考答案】[1]顺序结构[2]选择结构[3]循环结构第二章C程序设计的初步知识习题分析与解答一、选择题2.1 【参考答案】B)2.2 【参考答案】D)2.3 【参考答案】B)2.4 【参考答案】A)2.5 【参考答案】C)2.6 【参考答案】A)2.7 【参考答案】B)2.8 【参考答案】B)2.9 【参考答案】D)2.10 【参考答案】C)2.11 【参考答案】B)2.12 【参考答案】B)2.13 【参考答案】A)二、填空题2.14 【参考答案】[1]11 [2]122.15 【参考答案】[1]4.2 [2]4.22.16 【参考答案】[1]{ [2]} [3]定义[4]执行2.17 【参考答案】[1]关键字[2]用户标识符2.18 【参考答案】[1]int [2]float [3]double2.19 【参考答案】float a1=1.0, a2=1.0;或float a1=1, a2=1;(系统将自动把1转换为1.0)2.20 【参考答案】存储单元2.21 【参考答案】 3.52.22 【参考答案】[1]a*b/c [2]a/c*b [3]b/c*a2.23 【参考答案】把10赋给变量s2.24 【参考答案】[1]位[2]1位二进制数据(0或1)2.25 【参考答案】[1]8 [2]127 [3]01111111 [4]-128 [ 5 ] 10000000 2.26 【参考答案】[1]32767 [2]-32768 [3]10000000000000002.27 【参考答案】[1]十[2]八[3]十六三、上机改错题2.28 【分析与解答】第1行的错误:(1) include是一个程序行,因此在此行的最后不应当有分号(;)。

(完整版)答案第七章函数..

(完整版)答案第七章函数..

(完整版)答案第七章函数..第七章函数一、选择题1.以下函数声明正确的是: C 。

(02~03第一学期试题)A) double fun(int x, int y) B) double fun(int x; int y)C) double fun(int x, int y) ; D) double fun(int x , y)2.C语言规定,简单变量作实参,它与对应形参之间的数据传递方式是: B 。

(0级)A)地址传递;B)单向值传递;C)双向值传递;D)由用户指定传递方式3.以下关于C语言程序中函数的说法正确的是: B 。

(0级)A)函数的定义可以嵌套,但函数的调用不可以嵌套;B)函数的定义不可以嵌套,但函数的调用可以嵌套;C)函数的定义和调用均不可以嵌套;D)函数的定义和点用都可以嵌套。

4.以下正确的函数形式是: D 。

(1级)A)double fun(int x,int y) B)fun (int x,y){z=x+y;return z;} {int z;return z;}C)fun(x,y) D)double fun(int x,int y){int x,y ; double z; {double z;z=x+y; return z;} z=x+y; return z;}5.以下说法不正确的是: B 。

(1级)C 语言规定A)实参可以是常量、变量或表达式B)形参可以是常量、变量或表达式C)实参可以是任意类型D)形参应与其对应的实参类型一致6.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是 B 。

(0级)A) float型B) int 型C)long 型D)double 型7.以下错误的描述是 D 。

(0级)函数调用可以A)出现在执行语句中B)出现在一个表达式中C)做为一个函数的实参D)做为一个函数的形参8.若用数组名作为函数调用的实参,传递给形参的是 A 。

(0级)A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数9.以下正确的说法是 A 。

计算机二级c语言第七章 函数习题

计算机二级c语言第七章 函数习题

第七章函数一、选择题1、以下关于函数的叙述中正确的是A)每个函数都可以被其它函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数2、设函数fun的定义形式为void fun(char ch,float x) { … }则以下对函数fun的调用语句中,正确的是A)fun("abc",3.0); B)t=fun('D',16.5);C)fun('65',2.8); D)fun(32,32);3、有以下程序int f1(int x,int y){return x>y?x:y;}int f2(int x,int y){return x>y?y:x;}main(){ int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g); }程序运行后的输出结果是A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,74、有以下程序#define P 3#define F(int x) { return (P*x*x);}main(){ printf("%d\n",F(3+5));}程序运行后的输出结果是A)192 B)29 C)25 D)编译出错5、若程序中定义了以下函数double myadd(double a,double B){ return(a+B);}并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是A)double myadd(double a,B); B)double myadd(double,double);C)double myadd(double b,double A); D)double myadd(double x,double y);6、有以下程序char fun(char x ,char y){ if(x < y) return x;return y;}main(){ int a=’9’,b=’8’,c=’7’;printf("%c\n",fun(fun(a,b),fun(b,c))); }程序的执行结果是A)函数调用出错 B)8 C)9 D)77、有以下程序void f(int v,int w){ int t;t=v;v=w;w=t;}main(){ int x=1,y=3,z=2;if(x>y) f(x,y);else if(y>z) f(y,z);else f(x,z);printf("%d,%d,%d\n",x,y,z);}执行后输出结果是A) 1,2,3 B) 3,1,2 C) 1,3,2 D) 2,3,18、若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是A) 调用可以作为独立的语句存在 B) 调用可以作为一个函数的实参C) 调用可以出现在表达式中 D) 调用可以作为一个函数的形参9、有以下函数定义:void fun(int n,double x) { …… }若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A)fun(int y,double m); B) k=fun(10,12.5);C)fun(x,n); D) vold fun(n,x);10、有以下程序fun(int a,int b){ if(a>b) return(a);else return(b);}main(){ int x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);}程序运行后的输出结果是A) 3 B) 6 C) 8 D) 1211、在一个C程序中A) main函数必须出现在所有函数之前 B) main函数可以在任何地方出现C) main函数必须出现在所有函数之后 D) main函数必须出现在固定位置12、有以下程序int f1(int x,int y){ return x>y?x:y; }int f2(int x,int y){ return x>y?y:x; }main(){ int a=4,b=3,c=5,d,e,f;d=f1(a,b); d=f1(d,c);e=f2(a,b); e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出结果是A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 3,5,413、有如下程序void f(int x,int y){ int t;if(x < y){ t=x; x=y; y=t; }}main(){ int a=4,b=3,c=5;f(a,b); f(a,c); f(b,c);printf("%d,%d,%d\n",a,b,c);}执行后输出结果是A) 3,4,5 B) 5,3,4 C) 5,4,3 D) 4,3,514、C语言中,函数值类型的定义可以缺省,此时函数值的隐含类型是A) void B) int C) float D) double15、有以下程序float fun(int x,int y){ return(x+y); }main(){ int a=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是A) 编译出错 B) 9 C) 21 D) 9.016、若有以下程序#includevoid f(int n);main(){ void f(int n);f(5);}void f(int n){ printf("%d\n",n); }则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型17、以下函数值的类型是fun(float x){ float y;y= 3*x-4;return y;}A)int B)不确定 C)void D)float18、以下所列的各函数首部中,正确的是A)void play(var :Integer,var b:Integer)B)void play(int a,b)C)void play(int a,int b)D)Sub play(a as integer,b as integer)19、以下程序的输出结果是fun(int x, int y, int z){ z=x*x+y*y; }main(){ int a=31;fun(5,2,a);printf("%d",a);}A)0 B)29 C)31 D)无定值20、有如下函数调用语句func(rec1,rec2+rec3,(rec4,rec5));该函数调用语句中,含有的实参个数是A) 3 B) 4 C) 5 D) 有语法错21、有如下程序int func(int a,int b){ return(a+b);}main(){ int x=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}该程序的输出的结果是A) 12 B) 13 C) 14 D) 1522、以下叙述中不正确的是A)在不同的函数中可以使用相同名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在一个函数内的复合语句中定义的变量在本函数范围内有效23、有以下程序void fun (int a,int b,int c){ a=456; b=567; c=678;}main(){ int x=10, y=20,z=30;fun(x,y,z);printf("%d,%d,%d \n",z,y,x);}输出结果是A)30,20,10 B)10,20,30 C) 456,567,678 D) 678,567,45624、有以下程序#include "stdio.h"int abc(int u,intv);main(){ int a=24,b=16,c;c=abc(a,b);printf("%d\n",c);}int abc(int u,int v){ int w;while(v){ w=u%v; u=v; v=w }return u;}输出结果是A)6 B)7 C)8 D)925、以下说法中正确的是A)C语言程序总是从第一个的函数开始执行B)在C语言程序中,要调用的函数必须在main()函数中定义C)C语言程序总是从main()函数开始执行D)C语言程序中的main()函数必须放在程序的开始部分26、请读程序:#includefunc( int a, int b){ int c;c=a+b;return c;}main(){ int x=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);}上面程序的输出结果是A)11 B)20 C)21 D)31二、填空题1、有以下程序int sub(int n) {return(n/10+n%10); }main(){ int x,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%d\n",y);}若运行时输入:1234<回车>,程序的输出结果是。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]); /*读入数据*/
printf("before converted, output: \n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%4d",a[i][j]);
}
for(i=0;i<k;i++)
len[i]=strlen(c[i]); /*求每行字符串的长度*/
p=0;
for(i=1;i<k;i++)
if(len[p]<len[i]) p=i;
/*找最长字符串的行号*/
printf("The word is : %s\n",c[p]);
}
main()
{ char a[80];
printf("\n");
} /*输出原始数据*/
convert(a); /*调用函数进行处理*/
printf("after converted, output: \n");
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf("\n");
case 'd':
case 'D': m=13; break;
case 'e':
case 'E': m=14; break;
case 'f':
case 'F': m=15; break;
default: printf("Input error!\n"); exit(0);
/*如果输入了不合法的字母,输出相应的信息*/
7.4输出最长的单词,假设只包含字母和空格,单词间以空格分隔,空格个数不限
#include <string.h>
void fun(char a[])
{ int n,i,j,k=0,len[80],p;
char c[80][80],max[80];
n=strlen(a);
for(i=0;i<n;i++)
case 1: n=n+31;
}
return n; /*返回天数*/
}
main()
{ int year,month,day;
printf("Input year,month,day: "); scanf("%d%d%d",&year,&month,&day);
printf("%d.%d.%d is No.%d of a year.\n",year,month,day,fun(year,month,day));
case 7: n=n+31;
case 6: n=n+30;
case 5: n=n+31;
case 4: n=n+30;
case 3: n=n+31;
case 2: if(year%4==0&&year%100!=0||year%400==0)
n=n+28;
else n=n+29; /*根据year判断闰年或平年,进行累加*/
}
else if(isdigit(a[i])) /*如果a[i]是数字*/
m=a[i]-'0';
else { printf("Input error!\n"); exit(0); }
/*如果输入了不合法的字符,输出相应的信息*/
n=n*16+m; /*将十六进制数转换成十进制数*/
}
return n;
{m=n%10;/*从右边分离出第i个数字*/
n=n/10;/*为下一次分离作准备*/
}
return m;/*返回第k次分离出的数字*/
}
main()
{ long int n; int k;
printf("Input n: "); scanf("%ld",&n);
printf("Input k: "); scanf("%d",&k);
printf("The No.%d number is %d.\n",k,fun(n,k));
}
7.8计算s。已知
s=10!+7!*8!
将n!定义成函数。
#include <stdio.h>
double fun(int n)
{ double f=1.0; int i;
for(i=1;i<=n;i++)
isprime(int a)
{}
7.3已有变量定义和函数调用语句int a ,b;b=sum(a);函数sum()用以求 ,和数作为函数值返回。若a的值为10,经函数sum的计算后,b的值是55。请编写sum函数。
Sum(int n)
{}
7.3求∑k
#include <stdio.h>
sum(int n)
}
strcpy(message,"no find"); /*找不到,find字符串存入"no find"*/
}
main()
{ char name1[N][8],no1[N][8],No1[8],message1[8]; int i;
clrscr();
input(name1,no1); /*调用输入函数*/
printf("Input a line string: "); gets(a);
fun(a);
}
7.5一函数,输入一个十六进制数,输出相应的十进制数。
7.5十六进制数转换成十进制数
#include <stdio.h>
#include <ctype.h>
int fun(char a[])
{ int i,n=0,m;
f=f*i; /*求n!*/
return f; /*返回阶乘值*/
}
main()
{ printf("10!+7!*8!=%g\n",fun(10)+fun(7)*fun(8)); }
7.9定义一个函数,使给定的二维数组(3×3)转置,即行列转换,并输出。
7.9矩阵转置
#include <stdio.h>
void convert(int a[][3])
{ int i,j,t;
for(i=0;i<3;i++)
for(j=0;j<i;j++)
{ t=a[i][j]; a[i][j]=a[j][i]; a[j][i]=t; }
} /*矩阵转置*/
main()
{ int a[3][3],i,j;
printf("Input 3*3 array: \n");
}
7.7定义一个函数digit(n,k),它回送整数n的从右边开始数第k个数字的值。例如:
digit(15327,4)=5
digit(289,5)=0
7.7回送第k个数字
#include <stdio.h>
int fun(long n,int k)
{ int i,m ;
for(i=1;i<=k;i++)
if(a[i]!=32) /*a[i]不为空格,说明单词开始了*/
{ j=0;
while(a[i]!=32) /*没有遇到下一个空格,说明单词没有结束*/
{ c[k][j]=a[i]; j++; i++; } /*将单词放入字符串c[k]*/
c[k][j]='\0'; /*人为加串尾标志*/
k++; /*k为下一个单词存入c的行号*/
{ return abs(x-y); }
main()
{ int a=1,b=-5,c;
c=fun(a,b);
printf("|%d-%d|=%d\n",a,b,c);
}
7.2已有变量定义和函数调用语句:int x=57;isprime(x);函数isprime();用来判断一个整型数a是否为素数,若是素数,函数返回1,否则返回0。请编写isprime函数。
for(i=0;a[i];i++)
{ if(isalpha(a[i]))
/*如果a[i]是字母,求出相应的十进制数*/
switch(a[i])
{ case 'a':
case 'A': m=10; break;
case 'b':
case œ:
case 'C': m=12; break;
#include <string.h>
#define N 10
void input(char name[N][8],char no[N][8])
{ int i;
printf("Input %d name and No.\n",N);
相关文档
最新文档