谁有C语言的复习资料。。。我明天要考试啊。。。帮忙呐。。。
发布网友
发布时间:2023-01-15 14:42
我来回答
共1个回答
热心网友
时间:2023-11-12 05:55
填空:
1.一个C程序的执行是从( A )
A 本程序的main函数开始,到main函数结束
B 本程序的第一个函数开始,到本程序文件的最后一个函数结束
C 本程序的main函数开始,到本程序文件的最后一个函数结束
D 本程序的第一个函数开始,到本程序main函数结束
2.以下能正确地定义整型变量a,b Bint a和c并为其赋初值5的语句是( A )
A int a=5, b=5, B.c=5;,b,c=5; C a=5,b=5,c=5; D a=b=c=5;
3.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与( B )配对。
A 缩排位置相同的if B 其之前最近的if
C 其之后最近的if D 同一行上的if
4.以下正确的描述是:( C )
A while、do-while、for循环中的循环体语句都至少被执行一次(有时while循环一次也不执行)
B do-while循环中,while(表达式)后面的分号可以省略(while循环中分号可以省略,do-while循环不能省略)
C while循环体中,一定要有能使while后面表达式的值变为“假”的操作
D do-while循环中,根据情况可以省略while
5.C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( D )。
A 地址传递 B 由用户指定传递方式
C 由实参传给形参,再由形参传回给实参 D 单向值传递(实参传给形参)
6.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( A )。
A 自动(auto)B 静态(static)
C 外部(extern)D 寄存器(register)
7.以下关于宏的叙述中正确的是( C )。
A 宏名必须用大写字母表示 B 宏替换时要进行语法检查
C 宏替换不占用运行时间 D 宏定义中不允许引用已有的宏名
8.说明一个结构体变量时,系统分配给它的内存是( A )
A 各成员所需内存量的总和 B结构中第一个成员所需内存量
C 成员中占内存量最大都所需的容量 D结构中最后一个成员所需内存量
9.表达式0x13&0x17的值是( B )(这两个十六进制数先化为十进制,再化为二进制,进行运算,再将二进制结果化为十进制,再化为十六进制)
A 0x17 B 0x13 C 0x f8 D 0xec
10.若要用fopen函数打开一个新的二进制文件,该文件既要能读也要能写,则文件方式字符串应是( B )
A "ab+" B "wb+" C "rb+" D "ab"
11.以下叙述中正确的是 ( C )
A C语言比其他语言高级
B C语言可以不用编译就能被计算机识别执行
C C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D C语言出现得最晚,具有其他语言的一切优点
12.定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( B )
A 1.4 B 1 C 2.0 D 2
13.以下非法的赋值语句是( C )
A. n=(i=2,++i); B. j++; C. ++(j+1); D. x=j>0;
14.以下不能正确定义二维数组的选项是( D )
A. int a[2][2]={{1},{2}};
B. int a[][2]={1,2,3,4};
C. int a[2][2]={{1},{2,3}};
D. int a[][]={{1,2},{3,4}};
15.若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是( A )
A.scanf(%d%d%d”,&a,&b,d);
B.scanf(%d%d%d”,&a,&b,&d);
C.scanf(%d%d%d”, a, b,d);
D.scanf(%d%d%d”,a,b,*d);
16.以下程序段中,b的值是( B )
int a[10]={1,2,3,4,5,6,7,8,9,10},*p,b;
p=&a[0]; b=p[5];
A. 5 B. 6 C. 8 D. 9
17.以下哪一个表达式取值是正确的?( D )
A.6>5结果为6 B.6&&5结果为7
C.6||5结果为7 D.6<5结果为0
18.下列C语言标识符不合法的是: ( C )(C语言的标识符第一个字符必须为字母或下划线)
A. PERFECT B. perfectname
C. 8_number D. _number1
19.有以下程序结果 ( C )
main( )
{ int x=102,y=012;
printf(“%2d,%2d\n”,x,y);}(012是八进制,转化为十进制是10)
A. 10,01 B. 02,12
C. 102,10 D. 02,10
20.设有如下程序
char str[]=”hello”;
char *ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为 ( B )
A. ‘0’ B. ‘\0’
C.不确定的值 D. ‘0’的地址
21.C语言中,定义PI为一个符号常量,正确的是 ( A )
A.#define PI 3.14 B.define PI 3.14
C.#include PI 3.14 D.include PI 3.14
22.关于c表达式5||(a=b+c)==3的值,正确的说法为( A )
A.值为1 B.值为5 C.值为0 D.3
填空
1.若有定义语句:int x=3,y=2;float a=2.5,b=3.5;
则表达式(x+y)%2+(int)a/(int)b 的值为( 1 )。
2.设a、b、c均为int型变量且a=6,b=4,c=2,
则表达式 !(a-b)+c-1&&b+c/2的值是( 1 )。
3.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是( 0)。
4.从函数的形式看,函数分( 无参函数 )和(有参函数 )两类。
5.结构化程序由( 顺序程序 )、( 选择程序 )和( 循环 )。
6.在C语言中,&作为双目运算符时表示的是( 按位与运算符 ),而作为单目运算符时表示的是( 取地址运算符 )。
7.static对局部变量来说,它使变量由( 动态 )存储方式改变为( 静态 )存储方式。
8.C语言的标识符只能有三种字符组成,它们是( 字母 )、( 数字 )和( 下划线 )。
9.给以下程序输入2个数值给a,b变量,b中的值给a,变量a中的值给b,实现a,b交换,输出a,b的值。
#include <stdio.h>
main()
{int a,b,__t___;
printf("enter a,b,");scanf("%d%d",&a,&b);
____t=a____; __a=b____;_ b=t ;
printf("%d%d",a,b);
}
10.设int a[2][3]={{5},{6}};则数组元素( a[0][0] )的值为5。
11.若定义结构体变量
struct student
{ int num;
char name[10];
int age;
}student1;
则结构体变量student1在内存中占 14 字节。
读程序写结果
1.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
int i, j, m, n;
i=6; j=9;
m=++i; n=j++;
printf(“%d,%d,%d,%d\n”, i, j, m, n);
} 71079
2.写出下列表达式的值:
(1) x+a%3*(int)(x+y)%2/4 设x=5.2,a=7, y=7.4
=5.2+7%3*(int)(5.2+7.4)%2/4
=5.2+1*12%2/4
=5.2
(2) (float)(a+b)/2+(int)x%(int)y 设a=2, b=3, x=5.3, y=5.2
=(float)(2+3)/2+(int)5.3%(int)5.2
=2.5+5%5
=2.5
3.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
int x=2, y=-1, z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf(“z=%d\n”, z);
} z=2
4.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{
int i;
for(i=1; i<=5; i++)
switch(i%5)
{
case 0: printf("*"); break;
case 1: printf("#"); break;
default: printf("\n");
case 2: printf("&");
}
}
#
&
&
&
*
5.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{
int a[6][6], i, j;
for(i=1; i<6; i++)
for(j=1; j<6; j++)
a[i][j]=(i/j)*(j/i);
for(i=1; i<6; i++)
{ for(j=1; j<6; j++)
printf(“%2d”,a[i][j]);
printf(“\n”);
}
}
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
6.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
char a[ ]="morning", t;
int i, j=0;
for(i=1; i<7; i++)
if(a[j]<a[i]) j=i;
t=a[j]; a[j]=a[7]; a[7]=a[j];
puts(a);
}
mo
7.写出下列语句的执行结果。
#include <stdio.h>
#define MAX 10
int a[MAX], i;
void sub1( )
{ for(i=0; i<MAX; i++) a[i]=i+i; }
void sub2( )
{ int a[MAX], i, max;
max =5;
for(i=0; i<max; i++) a[i]=i;
}
void sub3(int a[])
{ int i;
for(i=0; i<MAX; i++) printf("%d,", a[i]);
printf("\n");
}
void main( )
{ printf("\n"); sub1( ); sub3(a); sub2( ); sub3(a); }
空一行
0,2,4,6,8,10,12,14,16,18,
0,2,4,6,8,10,12,14,16,18,
8.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{ int a=2, i;
for(i=0; i<3; i++) printf(“%4d”, f(a));
}
f(int a)
{ int b=0; static int c=3;
b++; c++;
return (a+b+c);
}
9.写出下列程序的执行结果。
#include <stdio.h>
void swap(int *pt1, int *pt2)
{ int temp;
temp=*pt1; *pt1=*pt2; *pt2=temp;
}
void exchange(int *q1, int *q2, int *q3)
{ if(*q1<*q2) swap(q1, q2); //if(a<b) a b zuojiaohuan
if(*q1<*q3) swap(q1, q3); //a<c
if(*q2<*q3) swap(q2, q3); //b<c ----
}
void main( )
{
int a=5, b=7, c=9, *p1, *p2, *p3;
p1=&a; p2=&b; p3=&c;
exchange(p1, p2, p3);
printf(“\n%d,%d,%d\n”, a, b, c);
}
空一行
9,7,5
10.写出下列程序的执行结果。
#include <stdio.h>
int *p;
void pp(int a, int *b)
{ int c=4;
*p=*b+c;
a=*p-c;
printf(“(2):%d,%d,%d\n”, a, *b, *p);
}
void main( )
{ int a=1, b=2, c=3;
p=&b; pp(a+c, &b);
printf(“(1):%d,%d,%d\n”, a, b, *p);
}
(1):2,6,6
(2):1,6,6
11.以下程序的输出结果是:( 2 )
main( )
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf(“%d\n”,c);
}
12.有以下程序输出结果是: 6
main( )
{ int a=5,b=4,c=6,d;
printf( “%d\n”, d=a>b ? (a>c ? a:c):(b));
}
13.有以下程序执行后的结果是 25
main()
{ int i, s=0;
for (i=0;i<10;i+=2)
s+=i+1;
printf (“%d\n”,s);
}
14.执行以下程序后,输出的是( ###### )
main( )
{ int i, j;
for( i=1;i<3;i++)
for (j=2;j<=4; j++)
printf (“#”);
}
15.有以下程序,执行结果为: 24
main( )
{
int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7 && p[i]%2) {k=k+p[i];i++;}
printf(“%d\n”,k);
}
16.有以下程序的输出结果是: 543
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);
}
17.有以下程序执行后的输出结果是 3 6 9
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,k=2;
for(i=0;i<3;i++)
{ printf(“%d ”,m[k][i]);}
}
18.有以下程序执行后的输出结果是 8,7,7,8
main( )
{ int a=7,b=8,*p,*q,*r;
p=&a; q=&b;
r=p; p=q; q=r;
printf(“%d,%d,%d\n”,*p,*q,a,b);
}
19.以下程序的输出结果是
int m=13;
int fun2(int x,int y)
{ int n=3;
return(x*y-n);
}
main( )
{ int a=7,b=5;
printf(“%d\n”,fun2(a,b)/m);
}
2
20.有以下程序,执行结果为:
main( )
{ int a=2,b=3,*P;
P=&a; b= *P+4;
printf(“%d\n”,b);
*P=4;
printf(“%d,%d\n”,a, *P);
}
6
4,4
21.以下程序的输出结果
main( )
{ int i=1,j=3;
printf(“%d,”,i++);
{ int i=0;
i+=j*2;
printf(“%d,%d,”,i,j);
}
printf(“%d,%d\n”,i,j);
}
1,6,3,2,3
编程题
1.从键盘输入12个整数,用起泡法对这12个整数进行由小到大的排序。(课本134页)
2.有一分数序列如下,求出这个数列的前40项之和。(课本129页)
2/1,3/2,5/3,8/5,13/8,21/13,……
3.从键盘输入10个整数保存在一个一维数组中,利用指针编写程序,将该数组中的10个整数按相反顺序存放。(课本237页)
4.有一个4×5的矩阵如下,求所有元素中的最大值、最小值及其相应的下标。(课本139页)
5.用弦截法求方程f(x)=3x3+2x2-5x-6的根(课本168页)
6.用π/4≈1-1/3+1/5-1/7+∙∙∙公式求π的近似值,直到某一项的绝对值小于10-7为止。(课本124页)
7.利用指针编写程序,将数组a中n个整数按相反顺序存放。(同上例3)
8.通过循环按行顺序为一个5X5的二维数组a赋1~25的自然数,然后输出该数组的左下三角
编程题答案
(1)
#include<stdio.h>
void main()
{
int a[12];
int i,j,t;
printf(“input 12 numbers:\n”);
for(i=0;i<12;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=0;j<11;j++)
for(i=0;i<11-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(“the sorted numbers :\n”);
for(i=0;i<12;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
(2)
#include<stdio.h>
void main()
{
int i,t,n=40;
float a=2,b=1,s=0;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf(“sum=%9.6f\n”,s);
}
(3)
#include<stdio.h>
void main()
{
void inv(int x[],int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
prinf(“the oringal array:\n”);
for(i=0;i<10;i++)
printf(“%d”,a[i]);
printf(“\n”);
inv(a,10);
printf(“the array has been inverted:\n”);
for(i=0;i<=10;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
void inv(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=10;i++)
{
j=n-1-i;
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
}
(4)
#include<stdio.h>
void main()
{
int i,j,row=0,colum=0,max;
int a[4][5]={{1,3,5,7,9},{2,4,6,8,10},{-5,-4,-3,-2,-1},{15,17,19,21,0}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
}
(5)
#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=((x+2/3)*x-5/3)*x-2.0;
return(y);
}
float xpoint(float x1,floatx2)
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); (此程序运行无错误,有两警告)
return(y);
}
float root(float x1.float x2)
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
If(y*y1>0)
{
y1=y;
x1=x;
}
else
x2=x;
}
while(fabs(y)>=0.0001);
return(x);
}
void main()
{
float x1,x2,f1,f2,x;
do
{
printf(“input x1,x2:\n”);
scanf(“%f,%f”,&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf(“A root of equation is%8.4\n”,x);
}
(6)
#include<stdio.h>
#include<math.h>
void main()
{
int s;
float n,t,pi;
t=1;
pi=0;
n=1.0;
s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf(“pi=%10.6f\n”,pi);
}
热心网友
时间:2023-11-12 05:55
填空:
1.一个C程序的执行是从( A )
A 本程序的main函数开始,到main函数结束
B 本程序的第一个函数开始,到本程序文件的最后一个函数结束
C 本程序的main函数开始,到本程序文件的最后一个函数结束
D 本程序的第一个函数开始,到本程序main函数结束
2.以下能正确地定义整型变量a,b Bint a和c并为其赋初值5的语句是( A )
A int a=5, b=5, B.c=5;,b,c=5; C a=5,b=5,c=5; D a=b=c=5;
3.为了避免在嵌套的条件语句if-else中产生二义性,C语言规定else子句总是与( B )配对。
A 缩排位置相同的if B 其之前最近的if
C 其之后最近的if D 同一行上的if
4.以下正确的描述是:( C )
A while、do-while、for循环中的循环体语句都至少被执行一次(有时while循环一次也不执行)
B do-while循环中,while(表达式)后面的分号可以省略(while循环中分号可以省略,do-while循环不能省略)
C while循环体中,一定要有能使while后面表达式的值变为“假”的操作
D do-while循环中,根据情况可以省略while
5.C语言规定,简单变量作为实参时,它和对应形参之间的数据传递方式是( D )。
A 地址传递 B 由用户指定传递方式
C 由实参传给形参,再由形参传回给实参 D 单向值传递(实参传给形参)
6.凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( A )。
A 自动(auto)B 静态(static)
C 外部(extern)D 寄存器(register)
7.以下关于宏的叙述中正确的是( C )。
A 宏名必须用大写字母表示 B 宏替换时要进行语法检查
C 宏替换不占用运行时间 D 宏定义中不允许引用已有的宏名
8.说明一个结构体变量时,系统分配给它的内存是( A )
A 各成员所需内存量的总和 B结构中第一个成员所需内存量
C 成员中占内存量最大都所需的容量 D结构中最后一个成员所需内存量
9.表达式0x13&0x17的值是( B )(这两个十六进制数先化为十进制,再化为二进制,进行运算,再将二进制结果化为十进制,再化为十六进制)
A 0x17 B 0x13 C 0x f8 D 0xec
10.若要用fopen函数打开一个新的二进制文件,该文件既要能读也要能写,则文件方式字符串应是( B )
A "ab+" B "wb+" C "rb+" D "ab"
11.以下叙述中正确的是 ( C )
A C语言比其他语言高级
B C语言可以不用编译就能被计算机识别执行
C C语言以接近英语国家的自然语言和数学语言作为语言的表达形式
D C语言出现得最晚,具有其他语言的一切优点
12.定义:int a=8,b=5,c;,执行语句c=a/b+0.4;后,c的值为( B )
A 1.4 B 1 C 2.0 D 2
13.以下非法的赋值语句是( C )
A. n=(i=2,++i); B. j++; C. ++(j+1); D. x=j>0;
14.以下不能正确定义二维数组的选项是( D )
A. int a[2][2]={{1},{2}};
B. int a[][2]={1,2,3,4};
C. int a[2][2]={{1},{2,3}};
D. int a[][]={{1,2},{3,4}};
15.若有说明语句:int a,b,c,*d=&c;,则能正确从键盘读入3个整数分别赋给变量a、b、c的语句是( A )
A.scanf(%d%d%d”,&a,&b,d);
B.scanf(%d%d%d”,&a,&b,&d);
C.scanf(%d%d%d”, a, b,d);
D.scanf(%d%d%d”,a,b,*d);
16.以下程序段中,b的值是( B )
int a[10]={1,2,3,4,5,6,7,8,9,10},*p,b;
p=&a[0]; b=p[5];
A. 5 B. 6 C. 8 D. 9
17.以下哪一个表达式取值是正确的?( D )
A.6>5结果为6 B.6&&5结果为7
C.6||5结果为7 D.6<5结果为0
18.下列C语言标识符不合法的是: ( C )(C语言的标识符第一个字符必须为字母或下划线)
A. PERFECT B. perfectname
C. 8_number D. _number1
19.有以下程序结果 ( C )
main( )
{ int x=102,y=012;
printf(“%2d,%2d\n”,x,y);}(012是八进制,转化为十进制是10)
A. 10,01 B. 02,12
C. 102,10 D. 02,10
20.设有如下程序
char str[]=”hello”;
char *ptr;
ptr=str;
执行完上面的程序段后,*(ptr+5)的值为 ( B )
A. ‘0’ B. ‘\0’
C.不确定的值 D. ‘0’的地址
21.C语言中,定义PI为一个符号常量,正确的是 ( A )
A.#define PI 3.14 B.define PI 3.14
C.#include PI 3.14 D.include PI 3.14
22.关于c表达式5||(a=b+c)==3的值,正确的说法为( A )
A.值为1 B.值为5 C.值为0 D.3
填空
1.若有定义语句:int x=3,y=2;float a=2.5,b=3.5;
则表达式(x+y)%2+(int)a/(int)b 的值为( 1 )。
2.设a、b、c均为int型变量且a=6,b=4,c=2,
则表达式 !(a-b)+c-1&&b+c/2的值是( 1 )。
3.若有定义:int a[3][4]={{1,2},{0},{4,6,8,10}};则初始化后,a[1][2]得到的初值是( 0)。
4.从函数的形式看,函数分( 无参函数 )和(有参函数 )两类。
5.结构化程序由( 顺序程序 )、( 选择程序 )和( 循环 )。
6.在C语言中,&作为双目运算符时表示的是( 按位与运算符 ),而作为单目运算符时表示的是( 取地址运算符 )。
7.static对局部变量来说,它使变量由( 动态 )存储方式改变为( 静态 )存储方式。
8.C语言的标识符只能有三种字符组成,它们是( 字母 )、( 数字 )和( 下划线 )。
9.给以下程序输入2个数值给a,b变量,b中的值给a,变量a中的值给b,实现a,b交换,输出a,b的值。
#include <stdio.h>
main()
{int a,b,__t___;
printf("enter a,b,");scanf("%d%d",&a,&b);
____t=a____; __a=b____;_ b=t ;
printf("%d%d",a,b);
}
10.设int a[2][3]={{5},{6}};则数组元素( a[0][0] )的值为5。
11.若定义结构体变量
struct student
{ int num;
char name[10];
int age;
}student1;
则结构体变量student1在内存中占 14 字节。
读程序写结果
1.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
int i, j, m, n;
i=6; j=9;
m=++i; n=j++;
printf(“%d,%d,%d,%d\n”, i, j, m, n);
} 71079
2.写出下列表达式的值:
(1) x+a%3*(int)(x+y)%2/4 设x=5.2,a=7, y=7.4
=5.2+7%3*(int)(5.2+7.4)%2/4
=5.2+1*12%2/4
=5.2
(2) (float)(a+b)/2+(int)x%(int)y 设a=2, b=3, x=5.3, y=5.2
=(float)(2+3)/2+(int)5.3%(int)5.2
=2.5+5%5
=2.5
3.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
int x=2, y=-1, z=2;
if(x<y)
if(y<0) z=0;
else z+=1;
printf(“z=%d\n”, z);
} z=2
4.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{
int i;
for(i=1; i<=5; i++)
switch(i%5)
{
case 0: printf("*"); break;
case 1: printf("#"); break;
default: printf("\n");
case 2: printf("&");
}
}
#
&
&
&
*
5.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{
int a[6][6], i, j;
for(i=1; i<6; i++)
for(j=1; j<6; j++)
a[i][j]=(i/j)*(j/i);
for(i=1; i<6; i++)
{ for(j=1; j<6; j++)
printf(“%2d”,a[i][j]);
printf(“\n”);
}
}
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
6.写出下列程序的执行结果。
#include <stdio.h>
void main( )
{
char a[ ]="morning", t;
int i, j=0;
for(i=1; i<7; i++)
if(a[j]<a[i]) j=i;
t=a[j]; a[j]=a[7]; a[7]=a[j];
puts(a);
}
mo
7.写出下列语句的执行结果。
#include <stdio.h>
#define MAX 10
int a[MAX], i;
void sub1( )
{ for(i=0; i<MAX; i++) a[i]=i+i; }
void sub2( )
{ int a[MAX], i, max;
max =5;
for(i=0; i<max; i++) a[i]=i;
}
void sub3(int a[])
{ int i;
for(i=0; i<MAX; i++) printf("%d,", a[i]);
printf("\n");
}
void main( )
{ printf("\n"); sub1( ); sub3(a); sub2( ); sub3(a); }
空一行
0,2,4,6,8,10,12,14,16,18,
0,2,4,6,8,10,12,14,16,18,
8.写出下列语句的执行结果。
#include <stdio.h>
void main( )
{ int a=2, i;
for(i=0; i<3; i++) printf(“%4d”, f(a));
}
f(int a)
{ int b=0; static int c=3;
b++; c++;
return (a+b+c);
}
9.写出下列程序的执行结果。
#include <stdio.h>
void swap(int *pt1, int *pt2)
{ int temp;
temp=*pt1; *pt1=*pt2; *pt2=temp;
}
void exchange(int *q1, int *q2, int *q3)
{ if(*q1<*q2) swap(q1, q2); //if(a<b) a b zuojiaohuan
if(*q1<*q3) swap(q1, q3); //a<c
if(*q2<*q3) swap(q2, q3); //b<c ----
}
void main( )
{
int a=5, b=7, c=9, *p1, *p2, *p3;
p1=&a; p2=&b; p3=&c;
exchange(p1, p2, p3);
printf(“\n%d,%d,%d\n”, a, b, c);
}
空一行
9,7,5
10.写出下列程序的执行结果。
#include <stdio.h>
int *p;
void pp(int a, int *b)
{ int c=4;
*p=*b+c;
a=*p-c;
printf(“(2):%d,%d,%d\n”, a, *b, *p);
}
void main( )
{ int a=1, b=2, c=3;
p=&b; pp(a+c, &b);
printf(“(1):%d,%d,%d\n”, a, b, *p);
}
(1):2,6,6
(2):1,6,6
11.以下程序的输出结果是:( 2 )
main( )
{ int a=2,b=-1,c=2;
if(a<b)
if(b<0) c=0;
else c+=1;
printf(“%d\n”,c);
}
12.有以下程序输出结果是: 6
main( )
{ int a=5,b=4,c=6,d;
printf( “%d\n”, d=a>b ? (a>c ? a:c):(b));
}
13.有以下程序执行后的结果是 25
main()
{ int i, s=0;
for (i=0;i<10;i+=2)
s+=i+1;
printf (“%d\n”,s);
}
14.执行以下程序后,输出的是( ###### )
main( )
{ int i, j;
for( i=1;i<3;i++)
for (j=2;j<=4; j++)
printf (“#”);
}
15.有以下程序,执行结果为: 24
main( )
{
int p[7]={11,13,14,15,16,17,18},i=0,k=0;
while(i<7 && p[i]%2) {k=k+p[i];i++;}
printf(“%d\n”,k);
}
16.有以下程序的输出结果是: 543
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);
}
17.有以下程序执行后的输出结果是 3 6 9
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,k=2;
for(i=0;i<3;i++)
{ printf(“%d ”,m[k][i]);}
}
18.有以下程序执行后的输出结果是 8,7,7,8
main( )
{ int a=7,b=8,*p,*q,*r;
p=&a; q=&b;
r=p; p=q; q=r;
printf(“%d,%d,%d\n”,*p,*q,a,b);
}
19.以下程序的输出结果是
int m=13;
int fun2(int x,int y)
{ int n=3;
return(x*y-n);
}
main( )
{ int a=7,b=5;
printf(“%d\n”,fun2(a,b)/m);
}
2
20.有以下程序,执行结果为:
main( )
{ int a=2,b=3,*P;
P=&a; b= *P+4;
printf(“%d\n”,b);
*P=4;
printf(“%d,%d\n”,a, *P);
}
6
4,4
21.以下程序的输出结果
main( )
{ int i=1,j=3;
printf(“%d,”,i++);
{ int i=0;
i+=j*2;
printf(“%d,%d,”,i,j);
}
printf(“%d,%d\n”,i,j);
}
1,6,3,2,3
编程题
1.从键盘输入12个整数,用起泡法对这12个整数进行由小到大的排序。(课本134页)
2.有一分数序列如下,求出这个数列的前40项之和。(课本129页)
2/1,3/2,5/3,8/5,13/8,21/13,……
3.从键盘输入10个整数保存在一个一维数组中,利用指针编写程序,将该数组中的10个整数按相反顺序存放。(课本237页)
4.有一个4×5的矩阵如下,求所有元素中的最大值、最小值及其相应的下标。(课本139页)
5.用弦截法求方程f(x)=3x3+2x2-5x-6的根(课本168页)
6.用π/4≈1-1/3+1/5-1/7+∙∙∙公式求π的近似值,直到某一项的绝对值小于10-7为止。(课本124页)
7.利用指针编写程序,将数组a中n个整数按相反顺序存放。(同上例3)
8.通过循环按行顺序为一个5X5的二维数组a赋1~25的自然数,然后输出该数组的左下三角
编程题答案
(1)
#include<stdio.h>
void main()
{
int a[12];
int i,j,t;
printf(“input 12 numbers:\n”);
for(i=0;i<12;i++)
scanf(“%d”,&a[i]);
printf(“\n”);
for(j=0;j<11;j++)
for(i=0;i<11-j;i++)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
printf(“the sorted numbers :\n”);
for(i=0;i<12;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
(2)
#include<stdio.h>
void main()
{
int i,t,n=40;
float a=2,b=1,s=0;
for(i=1;i<=n;i++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf(“sum=%9.6f\n”,s);
}
(3)
#include<stdio.h>
void main()
{
void inv(int x[],int n);
int i,a[10]={3,7,9,11,0,6,7,5,4,2};
prinf(“the oringal array:\n”);
for(i=0;i<10;i++)
printf(“%d”,a[i]);
printf(“\n”);
inv(a,10);
printf(“the array has been inverted:\n”);
for(i=0;i<=10;i++)
printf(“%d”,a[i]);
printf(“\n”);
}
void inv(int x[],int n)
{
int temp,i,j,m=(n-1)/2;
for(i=0;i<=10;i++)
{
j=n-1-i;
temp=x[i];
x[i]=x[j];
x[j]=temp;
}
return;
}
(4)
#include<stdio.h>
void main()
{
int i,j,row=0,colum=0,max;
int a[4][5]={{1,3,5,7,9},{2,4,6,8,10},{-5,-4,-3,-2,-1},{15,17,19,21,0}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{
max=a[i][j];
row=i;
colum=j;
}
printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);
}
(5)
#include<stdio.h>
#include<math.h>
float f(float x)
{
float y;
y=((x+2/3)*x-5/3)*x-2.0;
return(y);
}
float xpoint(float x1,floatx2)
{
float y;
y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1)); (此程序运行无错误,有两警告)
return(y);
}
float root(float x1.float x2)
{
float x,y,y1;
y1=f(x1);
do
{
x=xpoint(x1,x2);
y=f(x);
If(y*y1>0)
{
y1=y;
x1=x;
}
else
x2=x;
}
while(fabs(y)>=0.0001);
return(x);
}
void main()
{
float x1,x2,f1,f2,x;
do
{
printf(“input x1,x2:\n”);
scanf(“%f,%f”,&x1,&x2);
f1=f(x1);
f2=f(x2);
}
while(f1*f2>=0);
x=root(x1,x2);
printf(“A root of equation is%8.4\n”,x);
}
(6)
#include<stdio.h>
#include<math.h>
void main()
{
int s;
float n,t,pi;
t=1;
pi=0;
n=1.0;
s=1;
while(fabs(t)>1e-6)
{
pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
printf(“pi=%10.6f\n”,pi);
}