1. 输入并运行下面最简单的C程序。 (1)输出Hello World字符串。
#include
mian(){printf(\
(3) 2.5+2*7%2/4 #include
{printf(\return 0;
}
(4) 3*(int)sqrt(34)-sin(6)*5+0x2AF #include
int main()
{ printf(\- sin(6) * 5 + 0x2AF); return 0; }
(5) 4.5+8%5*(int)(2.7+4.5)/2%4 #include
{printf(\result is %f\\n\+ 8 % 5 * (int)(2.7 + 4.5) / 2 % 4); return 0; }
3 编程计算5x2?2x?6的两个根。
提示:对这个具体问题,可以先人工计算出判别式的值,以此作为已知信息就可以编程程序了。
? ? ?
将输入的文件存盘。
通过build菜单或相应的工具按钮对程序进行编译和连接。 执行连接后的程序。
#include
{printf(\ }
return 0;
(2)输入并运行求三个数之和的程序。 #include
mian()
{ printf(\}
? ? ?
输入该程序并存盘,然后进行编译和连
接,如果出错,进行调试,直到无错为止。 运行程序,并查看运行结果,判断结果正确与否。
修改输出格式和三个数据,重新编译、连接和运行程序,分析运行结果。
#include
{ printf(\ }
return 0;
#include
{double diat = 2 * 2 -4 * 5 * 6; printf(\-2/2.0/5,sqrt(-diat)/2.0/5,-2/2.0/5,-sqrt(-diat)/2.0/5);
return 0;} 1 定义求圆球的体积、表面积,求圆柱体的体积、表面积的函数。 #include
#define cubic(r) r*r*r
double circle_volume(double r) {return 4/3.0*PI*cubic(r); }
double surfacearea(double r) {return 4.0*PI*square(r);
1
2. 编程计算表达式的值。 (1)
120024?4?5
include
int main()
{ printf(\ return 0; }
(2)#include
{ printf(\result is %f\\n\* 3.141593 * sqrt(13 + pow(2.718282,2.0)))); return 0; }
}
double cylinder_volume(double r,double h) {return PI*square(r)*h; }
double cylinder_sfarea(double r,double h) {return 2.0*PI*r*(r+h); }
1. 定义函数:double tmax(double, double,
double),它返回三个参数中最大的一个。写一个主函数试验各种参数情况。 include
double tmax(double a,double b,double c) {double max; } int main() {double x,y,z;
printf(\scanf(\
printf(\,z)); return 0;
max = a;
if(b > max) max = b; if(c > max) max = c; return max;
printf(\}
int main() {print6or7(); print();
return 0; }
3. scanf函数输入一个百分制成绩,输出成绩
等级A、B、C、D、E,其中90~100分为
A,80~89分为B,70~79分为C,60~69分为D ,60分以下分为E。
要求百分制成绩用整数输入,在输入前要有提示,输入后要判断成绩的合理性,对不合理的成绩,应输出出错信息。输出结果中应包括百分制和等级成绩,并要有文字说明。使用if语句和switch语句分别实现。
#include
int score; printf(\scanf(\printf(\
while((score<0)||(score>100))
{printf(\error!please input one
input
one
score(0-100):\
}
2. 请写一个程序,它打印出1到100之间被
6或者7整除的所有的数;修改这个程序,使它打印出1到100之间只被6或者7之
一整除的数(不包括同时被两者整除的那些数)。 #include
void print() {int i;
score(0-100):\
scanf(\ } if(score>=90)
printf(\ else if(score>=80)
printf(\ else if(score>=70)
printf(\
else if(score>=60)
printf(\ else
printf(\
2
for(i=1;i<=100;++i) if((i%6==0)||(i%7==0)) printf(\printf(\
for(i=1;i<=100;++i)
if(((i%6==0)||(i%7==0))&&(iB!=0)) printf(\
return 0;
}*/
int switch_stru() {int score; printf(\score(0-100):\
input
one
return sum; }
int main()
{long k,i; double sum=0.0;
printf(\ scanf(\ printf(\
while(k<1)
{printf(\value error!please input k value(k>=1)again:\
}
scanf(\printf(\
scanf(\printf(\
while((score<0)||(score>100)) {printf(\error!please input one
score(0-100):\
scanf(\
}
switch(score/10) {case
10:case
9:printf(\
case 8:printf(\ case 7:printf(\
case
6:printf(\
default:printf(\
for(i=1;i<=k;++i) {sum += jiecheng(i);
}
printf(\
printf(\
}
5. 考虑不用函数(例如isprime)直接写出对
6~200的偶数验证哥德巴赫猜想的程序(利用循环、条件、break语句等,不使用goto语句)。将这样写出的程序与用定义函数的方式写出的程序比较。例如考察两个函数的行数、字节数,其中各种控制结构的嵌套深度,控制结构使用的个数等。
#include
int main()
{int n,m,k,misprime,nmisprime;/*misprime=0,m不是素数,否则m是素数;nmisprime=0,(n-m)不是素数,否则(n-m)是素数*/
for(n = 6;n <= 200;n += 2) for(m = 3;m <= n / 2;m += 2) {for(k = 2; k * k <= m;++k)/*判断m是否素数*/
{if(m % k == 0)
{misprime = 0; break; }
misprime = 1;
E');break;
}
return 0; }
int main() {
ifelse_stru();
switch_stru(); return 0; }
4. 写函数计算 1! + 2! + ... + k!。用主函数试
验函数对一系列k值计算出的结果。你写出的函数对1到10计算结果都正确吗?如果出现错误,弄清楚是什么原因。这个程序能对k = 30得到正确结果吗?(另外,你能只用一重循环完成函数的定义吗?) #include
double jiecheng(long k) {double sum=1.0; long i;
for(i=1;i<=k;++i) sum *= i;
3
}
for(k = 2;k * k <=(n-m);++k)/*判
断(n-m)是否素数*/
{
if((n-m) % k == 0)
{nmisprime = 0; break;
Cmn?n!(n?m)!m!
要求:
(1)编写一个函数计算n!
(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。
(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。
(4)运行程序并计算C8、C7、C8、C7、
5217 }
nmisprime = 1;
}if(misprime && nmisprime) {printf(\
=
%d
+ %d\\n\ break;
} }return 0; }
1.编写程序,设计一个判别素数的函数,在主函数中输入一个整数,调用这个判别函数,并输出是否为素数的信息。
#include
int isprime(int n) /*判断一个数是否为素数*/ {int m;
for(m = 2;m * m <= n;++m) if(n % m == 0) return 0; /*发现因子,不是素数*/ return 1; /*所有可能性均考虑过,没有因子,是素数*/ }
int main() {int n;
printf(\ while(scanf(\ {while(getchar() != '\\n') ; printf(\incorrect.An again.\ }
if(isprime(n))
printf(\else
printf(\
is
not
a
prime
C08。
#include
long fact(int n) /*计算阶乘*/ {return n == 0 ? 1 : n * fact(n-1); } int main() {int n,m;
printf(\ while(scanf(\!= 2 || ((n < 0 ) || (m < 0) || (n < m)))
{while(getchar() != '\\n') ; printf(\incorrect.Two integer
again(n>m>=0):\ } printf(\= %d,m = %d,cnm = %d\\n\return 0;
}
3.将一个正整数n以相反的顺序输出的递归算法可以如下描述:
如果 要输出的整数只有一位 则 输出该整数 否则 输出整数的个位数字 结束
反向输出除个位以外的全部数字
integer
据此算法设计的递归算法如下: void printn(int n)
{ if ((n>=0)&&(n<=9)) printf(\ else
{ printf(\ printn(n/10);
number.\\n\ return 0;
}
2.编写程序,计算下面公式并输出结果。
4
} }
请编写主程序,调用上述算法,反向输出正整数n。如输入123,则输出321。 #include
int printn(int n)
if((n >= 0) && (n <= 9))
printf(\else
{printf(\
return 0; }
int main() {
isdaffodil();
}
1.设计程序按步骤完成下列任务:
(1)编写函数sort,实现对整数数组排序的
功能,具体排序方法自己选择。 (2)主函数中,定义数组并使用初始化方
法给出数组初值。测试数据为{16,5,8,12,1,17,3,6,10,2}。
(3)主函数中调用sort函数实现对测试数
据排序的功能。要求分别打印出排序前后数组元素的值。 #include
for(j = 0;j < length - 1;++j)
interger
for(i = 0;i < length - 1 - j;++i)
if(arr[i] > arr[i+1]) {t = arr[i]; arr[i] = arr[i+1]; }
arr[i+1] = t;
printn(n/10); } return 0; }
int main() {int n;
printf(\
while(scanf(\{while(getchar() != '\\n') ;
incorrect.An
printf(\again:\
}
printf(\ printf(\ printn(n); printf(\return 0;
}
5. 编程打印所有“水仙花数”。(一个三位的
十进制数,其三个数位的数字之立方和等于这个数,称其为水仙花数) #include
for(i = 100;i < 1000;++i) {a = i / 100; i)
printf(\ for(i = 0;i < length;++i) printf(\ printf(\
return 0; }
int main()
{int i,n,array[] = {16,5,8,12,1,17,3,6,10,2}; n = sizeof(array) / sizeof(array[0]); printf(\
for(i = 0;i < n;++i)
printf(\printf(\
b = (i - 100 * a) / 10;
c = i % 10;
if((a * a * a + b * b * b + c * c * c) ==
printf(\
sort(n,array); return 0;
5
}
putchar('\\n');
2.
下面程序实现将一个字符串倒置的功能,编写程序,从键
strcpy(arr1,arr);
daozhi(arr);
盘接受一个字符串,利用给出的函数daozhi判定输入的字符串是否为回文。
倒置是指将字符串中的字符按相反顺序排列,如abcde倒置后变为edcba。所谓回文是指正序和反序字符排列方式相同的字符串,如abcDcba是回文。
字符串倒置的函数如下:
printf(\ if(strcmp(arr,arr1) == 0)
else
printf(\ }
return 0;
printf(\
void daozhi(char str[])
{int i,k,n;
char c,*s=str;
for (n=0;s[n]!='\\0';n++); /*
统计串长*/
n--; /* 最后一个字符位置*/
printf(\ for (i=0;i<=n/2;i++) { c=str[i];
str[i]=str[n-i]; str[n-i]=c; } }
提示:使用字符串函数strcpy和strcmp。
#include
{
int i,n;
char c,*s = str;
for(n = 0;s[n] != '\\0';++n) ; // n = strlen(str); --n; //
printf(\
4.设有下列矩阵:
1261014371115481216 A =
5913
编写程序,用二维数组存储矩阵元素,从键盘输入数据,将矩阵转置后按行输出。
#include
enum {rows = 4,columns = 4}; int main()
{
int
i,j,arr[rows][columns],arr1[rows][columns];
for(i = 0;i < rows;++i) for(j = 0;j < columns;++j) scanf(\ putchar('\\n');
printf(\ for(i = 0;i < rows;++i) { }
for(j = 0;j < columns;++j) printf(\putchar('\\n');
for(i = 0;i <= n / 2;++i) { } } int main()
{
char arr[NUM],arr1[NUM]; int i = 0;
printf(\
c = s[i]; s[i] = s[n-i]; s[n-i] = c;
for(i = 0;i < rows;++i) for(j = 0;j < columns;++j) arr1[j][i] = arr[i][j]; printf(\ for(i = 0;i < rows;++i)
{for(j = 0;j < columns;++j) printf(\ }
putchar('\\n');
scanf(\
6
return 0;
}