读程序
第一章 概述
[1]
分析下列程序段的运行结果。
main( )
{ char ch1='\101',ch2='\x 5c ';
printf("%c,%c\n",ch1,ch2);
}
第二章 基本数据类型和运算
[1]
分析下列程序,写出运行结果。
main()
{printf("C语言各数据类型的长度为:\n");
printf("short %d bytes\n",sizeof(short));
printf("int %d bytes\n",sizeof(int));
printf("long %d bytes\n",sizeof(long);
printf("char %d bytes\n",sizeof(char));
printf("float %d bytes\n",sizeof(float));
printf("double %d bytes\n",sizeof(double));
}
第三章 顺序、选择和循环结构的程序设计
[1]
阅读程序,写出运行结果。
main()
{ int a=10,b=4,c=3;
if (a<b) a=b;
if (a<c) a=c;
printf("%d,%d,%d",a,b,c);
}
[2]
阅读下列程序,写出程序的输出结果。
main()
{ int x=100,a=10,b=20,ok1=5,ok2=0;
if (a<b)
if (b!=15)
if (!ok1)
x=1;
else if(ok2)
x=10;
else x=-1;
printf("%d\n",x);
}
[3]
阅读下列程序,写出程序运行的输出结果。
main()
{ int y=9;
for (;y>0;y--)
if(y%3==0)
{
printf("%d",--y);
continue;
}
}
[4]
阅读下列程序:
main()
{int a;
char b;
float c;
printf("input a b c:");
scanf("%d%c%f",&a,&b,&c);
printf("a=%d,b=%c,c=%f\n",a,b,c);
}
程序运行后若输入“1234r1234.567(回车)”,写出程序的输出结果。
[5]
阅读下列程序:
main()
{int a;
float b,c;
printf("input a b c:");
scanf("%2d% 3f % 4f ",&a,&b,&c);
printf("a=%d,b=%f,c=%f",a,b,c);
}
程序运行后若输入“12345678987654321(回车)”,写出程序的输出结果。
[6]
阅读下列程序:
main()
{int a;
float b,c;
scanf("%d%f%f",&a,&b,&c);
printf("a=%d,b=%f,c=%f",a,b,c);
}
程序运行后若输入“12 345 6789 87654321(回车)”,写出程序的输出结果。
[7]
阅读下列程序:
main()
{ int a;
float b,c;
printf("input a b c:");
scanf("%d,%f,%f",&a,&b,&c);,
printf("a=%d,b=%f,c=%f\n",a,b,c);
}
程序运行后若输入“12345,678,976.388(回车)”,写出程序的输出结果。
[8]
阅读程序,写出运行结果。假设输入:123-45-6789(回车)
main()
{int a,b,c;
printf("input a b c:");
printf("ABC=%d\n",scanf("%3d-%2d-%4d",&a,&b,&c));
printf("a=%d,b=%d,c=%d\n",a,b,c);
}
第四章 数组
[1]
阅读程序,写出运行结果:
main()
{ static int a[][3]={9,7,5,3,1,2,4,6,8};
int i,j,s1=0,s2=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ if(i==j)s1=s1+a[i][j];
if(i+j==2) s2=s2+a[i][j];
}
printf("%d\n%d\n",s1,s2);
}
[2]
说明下列程序的功能。
main()
{ int i,j;
float a[3][3],b[3][3],x;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{ scanf("%f",&x);a[i][j]=x;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)b[j][i]=a[i][j];
for (i=0;i<3;i++)
{ printf("\n");
for(j=0;j<3;j++) printf("%f ",b[i][j]);
}
}
[3]
写出下列程序的运行结果。
main()
{ static char a[]={'*','*','*','*','*'};
int i,j,k;
for(i=0;i<5;i++)
{ printf("\n");
for(j=0;j<i;j++) printf("%c",' ');
for (k=0;k<5;k++) printf("%c",a[k]);
}
}
[4]
说明下列程序的功能。
main()
{ int i,j;
float a[3][3],b[3][3],c[3][3],x;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{scanf("%f",&x);a[i][j]=x;}
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{scanf("%f",&x);b[i][j]=x;}
for(i=0;i<3;i++)
for(j=0;j<3;j++) c[i][j]=a[i][j]+b[i][j];
for(i=0;i<3;i++)
{ printf("\n");
for(j=0;j<3;j++) printf("%f ",c[i][j]);
}
}
编程
前三章
[1]
请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
[2]
请编写程序,输入一行数组字符(用EOF结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如:若输入2 4 8 3〈CR> (<CR>表示回车)
则输出整数:2483.
[3]
编写程序打印出以下形式的乘法九九表。
** 乘法口诀 **
(1) (2) (3) (4) (5) (6) (7) (8) (9)
(1) 1 2 3 4 5 6 7 8 9
(2) 2 4 6 8 10 12 14 16 18
(3) 3 6 9 12 15 18 21 24 27
(4) 4 8 12 16 20 24 28 32 36
(5) 5 10 15 20 25 30 35 40 45
(6) 6 12 18 24 30 36 42 48 54
(7) 7 14 21 28 35 42 49 56 63
(8) 8 16 24 32 40 48 56 64 72
(9) 9 18 27 36 45 54 63 72 81
第四章 数组
[1]
编程序,输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。
[2]
编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。
[3]
编程序,输入两个字符串(<40个字符),连接后输出(不准用系统函数)。
[4]
编程序,按下列公式计算s的值(其中x1、x2、…、xn由键盘输入):
s=(x1-x0)2+(x2-x0)2+.....+(xn-x0)2 (其中x0是x1、x2、…、xn的平均值)
[5]
输入一个3×5的整数矩阵(假设所有的数据互不相同),输出其中最大值、最小值和它们的下标。
[6]
输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。
[7]
设某班50名学生的三科成绩表如下:
课程一 课程二 课程三
… … …
试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。
[8]
编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔。例如输入整数为2345,则输出应为:2,3,4,5。
[9]
编一个程序,输入一个字符串,将其中所有的大写英文字母+3,小写英文字母-3。然后再输出加密后的字符串。
[10]
编一个程序,将按第9题中加密的字符串(从键盘输入)解密后输出。
[11]
输入一行数字字符,请用数组元素坐位计数器来统计每个数字字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,....。
[12]
输入若干有序数放在数组中,然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。
(1)插在最前 (2)插在最后 (3)插在中间
参考答案
第一章 概述
[1]
运行后在屏幕上显示:A,\(换行)
第二章 基本数据类型和运算
[1]
用sizeof运算符测定所用的C系统中各种类型数据的长度。运行后,得到以下结果:
C语言各数据类型的长度为:
short 2 bytes
int 2 bytes
char 1 bytes
long 4 bytes
float 4 bytes
double 8 bytes
第三章 顺序、选择和循环结构的程序设计
[1]
10,4,3
[2]
-1
[3]
852
[4]
a=1234,b=r,c=1234.567017
[5]
a=12,b=345.000000,c=6789.000000
[6]
a=12,b=345.000000,c=6789.000000
[7]
a=12345,b=678.000000,c=976.388000
[8]
input a b c:
ABC=3
a=123,b=45,c=6789
第四章 数组
[1]
18
10
[2]
从键盘上输入一个3×3矩阵,将其转置后形成3×3矩阵输出。
[3]
*****
*****
*****
*****
*****
[4]
将键盘上输入的两个3×3矩阵的对应元素相加后输出。
编程
前三章
[1]
请编写输出以下图案的程序,图案的行数由输入的值确定。
A
BBB
CCCCC
DDDDDDD
EEEEEEEEE
#include<stdio.h>
main()
{char ch;
int i,j,p,t=1;
scanf("%d",&p);
for(i=1;i<=p;i++)
{ for(j=(p-i);j>0;j--)putchar(' ');
for(j=1;j<=t;j++)putchar('A'+i-1);
printf("\n");
t=t+2;
}
}
[2]
请编写程序,输入一行数组字符(用EOF结束),每个数字字符的前后都有空格。请编程,把这一行中的数字转换成一个整数。例如:若输入2 4 8 3〈CR> (<CR>表示回车)
则输出整数:2483.
#include<stdio.h>
main()
{ char ch;
while((ch=getchar())!=EOF)
if(ch!=' ')putchar(ch);
}
[3]
编写程序打印出以下形式的乘法九九表。
** 乘法口诀 **
(1) (2) (3) (4) (5) (6) (7) (8) (9)
(1) 1 2 3 4 5 6 7 8 9
(2) 2 4 6 8 10 12 14 16 18
(3) 3 6 9 12 15 18 21 24 27
(4) 4 8 12 16 20 24 28 32 36
(5) 5 10 15 20 25 30 35 40 45
(6) 6 12 18 24 30 36 42 48 54
(7) 7 14 21 28 35 42 49 56 63
(8) 8 16 24 32 40 48 56 64 72
(9) 9 18 27 36 45 54 63 72 81
[3]
#include <stdio.h>
main()
{ int i,j;
printf(" **乘法口诀** \n");
for(i=1;i<=9;i++)printf(" (%d) ",i);
printf("\n");
for(i=1;i<=9;i++)
{ printf("(%d)",i);
for(j=1;j<=9;j++)
printf("%5d",i*j);
printf("\n");
}
}
第四章 数组
[1]
编程序,输入单精度型一维数组a[10],计算并输出a数组中所有元素的平均值。
#include <stdio.h>
main()
{int i;
float a[10],f=0;
for(i=0;i<=9;i++)
{scanf("%f",&a[i]);f=f+a[i];}
printf("f=%f",f/10);
}
[2]
编程序,输入10个整数存入一维数组,再按逆序重新存放后再输出。
#include <stdio.h>
main()
{int i,j,a[10],k;
for(i=0;i<=9;i++) scanf("%d",&a[i]);
for(i=0,j=9;i<=4;i++,j--)
{k=a[i];a[i]=a[j];a[j]=k;}
for(i=0;i<=9;i++) printf("%d",a[i]);
}
[3]
编程序,输入两个字符串(<40个字符),连接后输出(不准用系统函数)。
#include "string.h"
#include <stdio.h>
main()
{int i,j,k;
char str1[80],str2[40];
scanf("%s",str1);
scanf("%s",str2);
k=strlen(str1);
j=strlen(str2);
for(i=0;i<=j;i++) str1[k+i]=str2[i];
printf("%s",str1);
}
[4]
编程序,按下列公式计算s的值(其中x1、x2、…、xn由键盘输入):
s=(x1-x0)2+(x2-x0)2+.....+(xn-x0)2 (其中x0是x1、x2、…、xn的平均值)
#include <stdio.h>
#define N 10
main()
{int i;
float s=0,x[N+1];
x[0]=0;
for(i=1;i<=N;i++)
{scanf("%f",&x[i]);x[0]=x[0]+x[i];}
x[0]=x[0]/N;
for(i=1;i<=N;i++) s=s+(x[i]-x[0])*(x[i]-x[0]);
printf("%f",s);
}
[5]
输入一个3×5的整数矩阵(假设所有的数据互不相同),输出其中最大值、最小值和它们的下标。
#include <stdio.h>
main()
{int i,j,a[3][5],d,d1,d2,x,x1,x2;
for(i=0;i<3;i++)
for(j=0;j<5;j++)scanf("%d",&a[i][j]);
x=d=a[0][0];x1=x2=d1=d2=0;
for(i=0;i<3;i++)
for(j=0;j<5;j++)
if(d<a[i][j]) {d=a[i][j];d1=i;d2=j;}
else if(x>a[i][j]) {x=a[i][j];x1=i;x2=j;}
printf("max=%d,h=%d,l=%d\n",d,d1,d2);
printf("min=%d,h=%d,l=%d\n",x,x1,x2);
}
[6]
输入一个字符串,将其中的所有大写字母改为小写字母,而所有小写字母全部改为大写字母,然后输出。
#include <ctype.h>
#include <stdio.h>
main()
{ char i,a[80];
scanf("%s",a);
for(i=0;i<strlen(a);i++)
if islower(a[i]) a[i]=a[i]-32;
else if isupper(a[i]) a[i]=a[i]+32;
printf("%s",a);
}
[7]
设某班50名学生的三科成绩表如下:
课程一 课程二 课程三
… … …
试编一个程序,输入这50个学生的三科成绩,计算并输出每科成绩的平均分。
#include <stdio.h>
#define N 50
main()
{int i,s[N][3];
float s0=0,s1=0,s2=0;
for(i=0;i<N;i++)
{ scanf("%d,%d,%d",&s[i][0],&s[i][1],&s[i][2]);
s0=s0+s[i][0]; s1=s1+s[i][1];s2=s2+s[i][2];
}
s0=s0/N;s1=s1/N;s2=s2/N;
printf("%f,%f,%f",s0,s1,s2);
}
[8]
编一个程序,输入一个短整型数据,输出每位数字,其间用逗号分隔。例如输入整数为2345,则输出应为:2,3,4,5。
#include <stdio.h>
main()
{short i=0,j,c[6];
scanf("%d",&j);
do{ c[i]=j%10;
i++;
j=j/10; }while(j!=0);
for(--i;i>=0;i--)
{ printf("%d",c[i]); if(i>0) printf(",");}
}
[9]
编一个程序,输入一个字符串,将其中所有的大写英文字母+3,小写英文字母-3。然后再输出加密后的字符串。
#include <ctype.h>
#include<stdio.h>
main()
{char i,a[80];
scanf("%s",a);
for(i=0;i<strlen(a);i++)
if (islower(a[i])) a[i]=a[i]-3;
else if (isupper(a[i])) a[i]=a[i]+3;
printf("%s",a);
}
[10]
编一个程序,将按第9题中加密的字符串(从键盘输入)解密后输出。
#include <stdio.h>
main()
{char i,a[80];
scanf("%s",a);
for(i=0;i<strlen(a);i++)
if (a[i]>=94 && a[i]<=119) a[i]=a[i]+3;
else if (a[i]>=68 && a[i]<=93) a[i]=a[i]-3;
printf("%s",a);
}
[11]
输入一行数字字符,请用数组元素坐位计数器来统计每个数字字符的个数。用下标为0的元素统计字符“1”的个数,下标为1的元素统计字符“2”的个数,....。
#include<stdio.h>
main()
{ int a[10]={0},i;
char c;
while((c=getchar())!='\n')
if(c<='0'&&c<='9')
if(c=='0')a[9]++;
else a[c-'1']++;
for(i=0;i<=9;i++)printf("%d,",a[i]);
}
[12]
输入若干有序数放在数组中,然后输入一个数,插入到此有序数列中,插入后,数组中的数仍然有序。请对以下三种情况运行你的程序,以便验证你的程序是否正确。
(1)插在最前 (2)插在最后 (3)插在中间
[12]
#include<stdio.h>
main()
{ int a[10]={ -1,3,5,9,12,15,17,19,21 },x,p,i;
scanf("%d",&x);
for(i=0;i<10;i++)
if(a[i]>=x){p=i;break;}
else if(a[i]==-1) {p=i;break;}
else {p=9;break;}
for(i=9;i>p;i--)
a[i]=a[i-1];
a[p]=x;
for(i=0;i<=9;i++)printf("%d,",a[i]);
}