第一章
1-1
#include <stdio.h>
int main(){
printf("15减去37的结果是%d",15-37);
return 0;
}
1-2
#include <stdio.h>
int main(){
printf("天\n");
printf("地\n");
printf("人\n");
return 0;
}
1-3
#include <stdio.h>
int main(){
printf("喂\n");
printf(" \n");
printf("您好\n");
printf("再见。\n");
return 0;
}
1-4
#include <stdio.h>
int main() {
int a = 3.14;
printf("输出a的值:%d", a);
return 0;
}
int是整数型的 小数点后面会被忽略 只保留整数部分
1-5
#include <stdio.h>
int main (){
int a;
printf("请输入一个整数:",a);
scanf("%d",&a);
printf("该整数加去12的结果是:%d",a+6);
return 0;
}
1-6
#include <stdio.h>
int main (){
int a;
printf("请输入一个整数:",a);
scanf("%d",&a);
printf("该整数减去6的结果是:%d",a-6);
return 0;
}
1-7
#include <stdio.h>
int main(){
puts("天");
puts("地");
puts("人");
return 0;
}
1-8
#include <stdio.h>
int main(){
int a,b;
int c;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
c=a*b;
printf("他们的乘积是:%d",c);
return 0;
}
1-9
#include <stdio.h>
int main(){
int a,b,c;
int d;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("整数3:"); scanf("%d",&c);
d=a+b+c;
printf("他们的和是:%d",d);
return 0;
}
第二章
2-1
#include <stdio.h>
int main(){
int a,b;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("a的值是b的值的%d%%",(a*100)/b);
return 0;
}
2-2
#include <stdio.h>
int main(){
int a,b;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("他们的和是%d,积是%d",a+b,a*b);
return 0;
}
2-3
#include <stdio.h>
int main(){
double a;
printf("请输入一个实数:"); scanf("%lf",&a);
printf("你输入的是%lf",a);
return 0;
}
那个很像1的是小写L来的
2-4
#include <stdio.h>
int main()
{
int n = 0;
double m = 0;
n = 10 / 2;
m = 10.0 / 2.0;
printf("整型常量除:%d\n", 10 / 2);
printf("浮点型常量除:%f\n", 10.0 / 2.0);
printf("int型常量除:%d\n", n);
printf("double型常量除:%f\n", m);
return 0;
}
2-5
#include <stdio.h>
int main(){
int a,b;
puts("请输入两个整数:");
printf("整数1:"); scanf("%d",&a);
printf("整数2:"); scanf("%d",&b);
printf("a的值是b的值的%f%%",(double)(a*100)/b);
return 0;}
2-6
#include <stdio.h>
int main(){
int a;
printf("请输入你的身高:"); scanf("%d",&a);
printf("您的标准体重是%。lf公斤",(a-100)*0.9);
return 0;
}
第三章
3-1
#include <stdio.h>
int main(){
int a,b;
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
if(a/b)
puts("b不是a的约数");
else
puts("b是a的约数");
return 0;
}
3-2
结果变得相反
3-3
#include <stdio.h>
int main(){
int a;
printf("整数a:"); scanf("%d",&a);
if(a==0)
printf("绝对值是0");
else if(a>0)
printf("绝对值是%d",a);
else
printf("绝对值是%d",-a);
return 0;
}
3-4
#include <stdio.h>
int main(){
int a,b;
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
if(a==b)
printf("a和b相等");
else if(a>b)
printf("a大于b");
else
printf("a小于b");
return 0;
}
3-5
#include <stdio.h>
int main()
{
int a = 2;
int b = 3;
printf("%d\n", a > b);
printf("%d\n", a < b);
printf("%d\n", a == b);
printf("%d\n", a != b);
return 0;
}
3-6
#include <stdio.h>
int main(){
int a,b,c,min;
puts("请输入三个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
min=a;
if(b<min) min=b;
if(c<min) min=c;
printf("他们的最小值是%d",min);
return 0;
}
3-7
#include <stdio.h>
int main(){
int a,b,c,d,max;
puts("请输入四个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
printf("整数d:"); scanf("%d",&d);
max=a;
if(b>max) max=b;
if(c>max) max=c;
if(d>max) max=d;
printf("他们的最大值是%d",max);
return 0;
}
3-8
#include <stdio.h>
int main(){
int n1,n2;
puts("请输入两个整数");
printf("整数n1:"); scanf("%d",&n1);
printf("整数n2:"); scanf("%d",&n2);
if(n1>n2)
printf("他们的差是%d",n1-n2);
else
printf("他们的差是%d",n2-n1);
return 0;
}
3-9
#include <stdio.h>
int main(){
int n1,n2;
puts("请输入两个整数");
printf("整数n1:"); scanf("%d",&n1);
printf("整数n2:"); scanf("%d",&n2);
n1==n2?printf("他们是相等数"):printf("他们不是相等数");
return 0;
}
3-10
#include <stdio.h>
int main(){
int a,b,c,min;
puts("请输入三个整数。");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
if(a==b&&a==c)
printf("三个值相等");
else if(a!=b&&a!=c&a!=c)
printf("三个值不相等");
else
printf("有两个值相等");
return 0;
}
3-11
#include <stdio.h>
int main(){
int a,b;
puts("请输入两个整数");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
if(a-b<=10||b-a<=10)
printf("他们的差小于10");
else
printf("他们的差大于10");
return 0;
}
3-12
#include <stdio.h>
int main() {
int no, a;
printf("请输入一个整数:"); scanf("%d", &no);
a=no%2;
switch (a){
case 0:puts("输入的整数是偶数"); break;
case 1:puts("输入的整数是奇数"); break;
}
return 0;
}
3-13
#include<stdio.h>
int main()
{
int month;
printf("请输入月份:"); scanf("%d", &month);
switch (month)
{
case 1:printf("%d月是冬季", month); break;
case 2:printf("%d月是冬季",month); break;
case 3:printf("%d月是春季",month); break;
case 4:printf("%d月是春季",month); break;
case 5:printf("%d月是春季",month); break;
case 6:printf("%d月是夏季",month); break;
case 7:printf("%d月是夏季",month); break;
case 8:printf("%d月是夏季",month); break;
case 9:printf("%d月是秋季",month); break;
case 10:printf("%d月是秋季",month); break;
case 11:printf("%d月是秋季",month); break;
case 12:printf("%d月是冬季",month); break;
default:printf("%d月不存在!",month); break;
}
return 0;
}
第四章
4-1
#include <stdio.h>
int main() {
int no, a;
printf("请输入一个整数:"); scanf("%d", &no);
int retry;
do{
if(no==0)
puts("该整数是零");
else if(no>0)
puts("该整数大于零");
else
puts("该整数小于零");
printf("是否继续?<yes---0,no--9>:"); scanf("%d",&retry);
}while(retry==0);
return 0;
}
4-2
#include <stdio.h>
int main(){
int a,b;
printf("请输入一个整数a:"); scanf("%d",&a);
printf("请输入一个整数b:"); scanf("%d",&b);
int sum=0;
if(a>b){
int i=b;
do
{
sum=sum+i;
i=i+1;
}while(i<=a);
printf("大于%d小于%d的所有整数和是%d\n",b,a,sum);
}else{
int i=a;
do{
sum=sum+i;
i=i+1;
}while(i<=b);
printf("大于%d小于%d的所有整数和是%d\n",a,b,sum);
}
return 0;
}
4-3
#include <stdio.h>
int main(){
int n;
printf("请输入一个整数:"); scanf("%d",&n);
if(n>=0){
while(n>=0){
printf("%d",n);
n--;}
}else
puts("");
return 0;
}
4-4
#include <stdio.h>
int main(){
int n;
printf("请输入一个整数:"); scanf("%d",&n);
if(n>=0){
while(n>=1){
printf("%d",n);
n--;}
}else
puts("");
return 0;
}
4-5
#include <stdio.h>
int main(){
int i=1, n;
printf("请输入一个整数:"); scanf("%d",&n);
if(i>=0){
while(n>=1){
printf("%d",i++);
n--;}
}else
puts("");
return 0;
}
4-6
#include <stdio.h>
int main(){
int no;
printf("请输入一个整数:"); scanf("%d",&no);
int i;
while(i<=no){
printf("%d",i);
i=i+2;
}
return 0;
}
4-7
#include <stdio.h>
int main(){
int no;
printf("请输入一个正整数:"); scanf("%d",&no);
int i;
while(i<=no){
printf("%d",i);
i=i*2;
}
return 0;
}
4-8
#include <stdio.h>
int main(){
int no;
printf("正整数:"); scanf("%d",&no);
int i;
if(no>=1){
while(no-->1)
putchar('*');
putchar('\n');
}
return 0;
}
4-9
#include <stdio.h>
int main(){
int n;
printf("请输入正整数:"); scanf("%d",&n);
int i=1;
if(n>=0){
while(i<=n){
if(i%2==0){
printf("-");
}
else
printf("+");
i+=1;}
}
return 0;
}
4-10
#include <stdio.h>
int main(){
int n;
printf("请输入正整数:"); scanf("%d",&n);
int i=1;
if(n>=0){
while(n-->0){
printf("-");}
}
return 0;
}
4-11
#include <stdio.h>
int main(){
int n;
do {
printf("请输入正整数:");
scanf("%d", &n);
if(n<=0){
puts("请不要输入一个正整数。");
}
}while(n<=0);
printf("该整数的逆向显示的结果是");
while(n>0){
printf("%d",n%10);
n/=10;
}
puts("。");
return 0;
}
4-12
#include <stdio.h>
int main(){
int n,cnt=0;
do {
printf("请输入正整数:");
scanf("%d", &n);
if(n<=0){
puts("请不要输入一个正整数。");
}
}while(n<=0);
printf("该整数的位数是");
while(n>0){
n/=10;
cnt+=1;
}
printf("%d",cnt);
puts("。");
return 0;
}
4-13
#include <stdio.h>
int main(){
int n,sum=0,i;
printf("n的值是:",n);
scanf("%d",&n);
for(i=0;i<=n;i++){
sum+=1;
}
printf("1到%d:%d",n,sum);
return 0;
}
4-14
#include <stdio.h>
int main(){
int a,i;
printf("请输入一个整数:");
scanf("%d",&a);
for(i=1;i<=a;i++){
printf ("%d",i%10);
}
return 0;
}
4-15
#include <stdio.h>
int main(){
int a,b,c;
printf("开始数值(cm):");
scanf("%d",&a);
printf("结束数值(cm):");
scanf("%d",&b);
printf("间隔数值(cm):");
scanf("%d",&c);
for(;a<=b;a+=c){
printf("%dcm",a);
printf(" ");
printf("%.2f",(double)(a-100)*0.9);
}
return 0;
}
4-16
#include <stdio.h>
int main(){
int a,i;
printf("整数值:");
scanf("%d",&a);
for(i+=1;i<=a;i++){
if(i%2!=0)
printf("%d",i);
}
return 0;
}
4-17
#include <stdio.h>
int main(){
int a,i;
printf("整数值:");
scanf("%d",&a);
for(i+=1;i<=a;i++)
printf("%d的二次方是:%d\n",i,i*i);
return 0;
}
4-18
#include <stdio.h>
int main(){
int a,i;
printf("显示多少个*");
scanf("%d",&a);
for(i+=1;i<=a;i++){
printf("*");
if(i%5==0)
printf("\n");}
return 0;
}
4-19
#include <stdio.h>
int main(){
int a,i,cnt;
printf("整数值:");
scanf("%d",&a);
for(i+=1;i<=a;i++) {
printf("*");
if (a % i == 0) {
printf("\n");
cnt = 1;
}
}
printf("约数有:%d",cnt);
return 0;
}
4-20
#include <stdio.h>
int main(){
printf(" |");
int i,j;
for(i=1;i<=9;i++){
printf("%3d",i);
}
putchar('\n');
for (i=1;i<=9;i++){
printf("----");
}
putchar('\n');
for(i=1;i<=9;i++){
printf("%d|",i);
for(j=1;j<=9;j++)
printf("%3d",i*j);
putchar('\n');
}return 0;
}
4-21
#include <stdio.h>
int main() {
int a,b,c;
printf("生成一个正方形。");
printf("正方形有几层:"); scanf("%d",&a);
for(b=1;b<=a;b++){
for(c=1;c<=a;c++)
putchar('*');
putchar('\n');
}
return 0;
}
4-22
#include <stdio.h>
int main() {
int a, b;
puts("让我们来画一个长方形");
printf("一边:");
scanf("%d", &a);
printf("另一边:");
scanf("%d", &b);
int h, w;
if (a < b) {
for (h = 1; h <= a; h++) {
for (w = 1; w <= b; w++) {
putchar('*');
}
putchar('\n');
}
} else {
for (h = 1; h <= b; h++) {
for (w = 1; w <= a; w++) {
putchar('*');
}
putchar('\n');
}
}
return 0;
}
4.23
(1)左上角的等腰三角形
#include <stdio.h>
int main(){
int i,j,len;
puts("生成直角在左上方的等腰直角三角形。");
printf("短边:"); scanf("%d",&len);
for(i=1;i<=len;i++){
for(j=0;j<=len-i;j++)
putchar('*');
putchar('\n');}
return 0;
}
内循环结束了,外循环才能继续运行。
(2)右上方的等腰三角形
#include <stdio.h>
int main(){
int i,j,len;
puts("生成直角在右上方的等腰直角三角形。");
printf("短边:"); scanf("%d",&len);
for(i=0;i<=len;i++){
for(j=1;j<=len-i;j++)
putchar('*');
for(j=0;j<=i;j++)
putchar(' ');
putchar('\n');}
return 0;
}
4-24
#include <stdio.h>
int main(){
int i,j,len;
puts("让我们来画一个金字塔。");
printf("金字塔有几层:"); scanf("%d",&len);
for(i=1;i<=len;i++){
for(j=1;j<=len-i;j++)
printf(" "); /*输出左边的空格*/
for(j=1;j<=(i-1);j++)
printf("*"); /*左侧的*号*/
printf("*"); /*中间的*号*/
for(j=1;j<=(i-1);j++)
printf("*"); /*右侧的*号*/
printf("\n");
}
return 0;
}
4-25
#include <stdio.h>
int main(){
int i,j,len;
puts("让我们来画一个向下金字塔。");
printf("金字塔有几层:"); scanf("%d",&len);
for(i=1;i<=len;i++){
for(j=1;j<=i-1;j++)
printf(" "); /*输出左边的空格*/
for(j=1;j<=len-i;j++)
printf("%d",i%10); /*左侧的*号*/
printf("%d",i%10); /*中间的*号*/
for(j=1;j<=len-i;j++)
printf("%d",i%10); /*右侧的*号*/
printf("\n");
}
return 0;
}
第五章
5-1
#include <stdio.h>
int main(){
int i;
int v[5];
for(i=0;i<5;i++)
v[i]=i;
for(i=0;i<5;i++)
printf("[%d]=%d\n",i,v[i]);
return 0;
}
5-2
#include <stdio.h>
int main(){
int i,c=5;
int v[5];
for(i=0;i<5;i++)
v[i]=i+1;
for(i=0;i<5;i++) {
c--;
printf("[%d]=%d\n", i, v[c]);
}
return 0;
}
5-3
#include <stdio.h>
int main(){
int i;
int v[5]={5,4,3,2,1};
for(i=0;i<5;i++)
printf("v[%d]=%d\n",i,v[i]);
return 0;
}
#include <stdio.h>
int main(){
int i;
int a[5]={5,4,3,2,1};
int b[5];
for(i=0;i<5;i++)
b[i]=a[i];
puts(" a b");
puts("---------");
for (i=0;i<5;i++)
printf("%4d%4d\n",a[i],b[i]);
return 0;
}
5-4
#include <stdio.h>
int main(){
int i;
int a[5]={36,23,17};
int b[5];
for(i=0;i<5;i++)
b[4-i]=a[i];
puts(" a b");
puts("---------");
for (i=0;i<5;i++)
printf("%4d%4d\n",a[i],b[i]);
return 0;
}
5-5
#include <stdio.h>
#define NUMBER 7 /*数组元素总数*/
int main(){
int i;
int x[NUMBER];
for(i=0;i<NUMBER;i++){
printf("x[%d]:",i);
scanf("%d",&x[i]);
}
for (i=0;i<NUMBER-4;i++){
int temp=x[i];
x[i]=x[NUMBER-1-i];
x[NUMBER-1-i]=temp;
}
puts("倒序排列了。");
for(i=0;i<NUMBER;i++)
printf("x[%d]=%d\n",i,x[i]);
return 0;
}
5-6
a=1.0 b=1
5-7
#include <stdio.h>
#define NUMBER 100 /*数组元素总数*/
int main(){
int a,i;
int x[NUMBER];
printf("数据个数:"); scanf("%d",&a);
for(i=0;i<a;i++){
printf("x[%d]号:",i+1);
scanf("%d",&x[i]);
}
putchar('{');
printf("%d",x[0]);
for(i=1;i<a;i++)
{
printf(", %d",x[i]);
}
printf("}\n");
return 0;
}
5-8
#include <stdio.h>
#define NUMBER 80 /*数组元素总数*/
int main(){
int i,j;
int num;
int tensu[NUMBER];
int bunpu[11]={0};
printf("请输入学生的人数:");
do{
scanf("%d",&num);
if(num<1||num>NUMBER)
printf("\a请输入1~%d的数: ",NUMBER);
}while (num<1||num>NUMBER);
printf("请输入%d人的分数。\n",num);
for(i=0;i<num;i++){
printf("%2d号:",i+1);
do{
scanf("%d",&tensu[i]);
if (tensu[i] < 0 || tensu[i] > 100)
printf("\a请输入1~100的数:");
}while(tensu[i]<0||tensu[i]>100);
bunpu[tensu[i]/10]++;
}
puts("\n----分布图-----");
for(i=0;i<=9;i++){
printf("%3d-%3d:",i*10,i*10+9);
for(j=0;j<=bunpu[i];j++)
putchar('*');
putchar('\n');
}
printf(" 100:");
for(j=0;j<bunpu[10];j++){
putchar('*');}
putchar('\n');
return 0;
5-9
#include <stdio.h>
#define NUMBER 80
int main()
{
int i,j;
int num;
int score[NUMBER];
int scattergram[11]={0};
int max;
int max_x;
printf("请输入学生人数:");
do{
scanf("%d",&num);
if(num<1 || num>NUMBER)
printf("请输入1~%d之间的整数:",NUMBER);
}while(num<1 || num>NUMBER);
printf("请输入%d人的分数。\n",num);
for(i=0;i<num;i++)
{
printf("%d号:",i+1);
do{
scanf("%d",&score[i]);
if(score[i]<0 || score[i]>100)
{
printf("请输入0~100之间的整数:");
}
}while(score[i]<0 || score[i]>100);
scattergram[score[i]/10]++;
}
max=scattergram[0];
for(i=1;i<11;i++)
{
if(scattergram[i]>max)
max=scattergram[i];
} /*确定最高层数*/
max_x=max;
for(i=0;i<max_x;i++)
{
for(j=0;j<11;j++)
{
if(max>scattergram[j])
printf(" ");
else
printf("* ");
}
putchar('\n');
max -= 1;
}
printf("--------------------------------------------\n");
for(i=1;i<=11;i++)
{
printf(" %d ",(i-1)*10);
}
putchar('\n');
return 0;
}
垂直的直方图其实是一层一层打印出来的 if句确定他的最高层 然后再循环
5-10
#include <stdio.h>
int main() {
int i, j, k;
int tensu1[4][3], tensu2[3][4];
int product[4][4] = {0};
puts("请输入第一个矩阵的具体元素");
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("tensu1[%d][%d]: ", i, j);
scanf("%d", &tensu1[i][j]);
}
}
puts("请输入第二个矩阵的具体元素");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("tensu2[%d][%d]: ", i, j);
scanf("%d", &tensu2[i][j]);
}
}
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
for (k = 0; k < 3; k++) {
product[i][j] += tensu1[i][k] * tensu2[k][j];
}
}
}
puts("显示矩阵1:");
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%6d", tensu1[i][j]);
}
putchar('\n');
}
puts("显示矩阵2:");
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%6d", tensu2[i][j]);
}
putchar('\n');
}
puts("显示乘积矩阵:");
for (i = 0; i < 4; i++) {
for (j = 0; j < 4; j++) {
printf("%6d", product[i][j]);
}
putchar('\n');
}
return 0;
}
5-11
#include <stdio.h>
int main() {
int i, j=1;
int tensu1[6], tensu2[6];
int sum1=0, sum2=0, sum3=0;
puts("请输入六名学生的两门成绩");
do{j+=1;
for (i = 0; i < 6; i++) {
printf("%d号 ", i + 1);
do {
printf("语文:");
scanf("%d", &tensu1[i]);
if (tensu1[i] < 0 || tensu1[i] > 100)
printf("请输入1~100的数:");
} while (tensu1[i] < 0 || tensu1[i] > 100);
sum2 += tensu1[i];
}
for (i = 0; i < 6; i++) {
printf("%d号 ", i + 1);
do {
printf("数学:");
scanf("%d", &tensu2[i]);
if (tensu2[i] < 0 || tensu2[i] > 100)
printf("请输入1~100的数:");
} while (tensu2[i] < 0 || tensu2[i] > 100);
sum3 += tensu2[i];
}
for (i = 0; i < 6; i++) {
sum1 = tensu1[i] + tensu2[i];
printf("%d号两门总分为%d,平均分为%.2f ",i+1,sum1, (double) sum1 / 2);
putchar('\n');
}
putchar('\n');
}while(j>6);
printf("语文的总分:%5d,平均分:%.2f\n",sum2,(double)sum2/6);
printf("数学的总分:%5d,平均分:%.2f\n",sum3,(double)sum3/6);
return 0;
}
5-12
#include <stdio.h>
int main()
{
int i,j,k;
int course[2][4][3]={{{91,63,78},{67,72,46},{89,34,53},{32,54,34}},
{{97,67,82},{73,43,46},{97,56,21},{85,46,35}}};
for(i=0;i<2;i++)
{
printf("第%d次考试的分数\n",i+1);
for(j=0;j<4;j++)
{
printf("%d:",j+1);
for(k=0;k<3;k++)
{
printf("%4d",course[i][j][k]);
}
putchar('\n');
}
putchar('\n');
}
puts("总分");
for(i=0;i<1;i++)
{
for(j=0;j<4;j++)
{
printf("%d:",j+1);
for(k=0;k<3;k++)
{
printf("%4d",course[i][j][k]+course[i+1][j][k]);
}
putchar('\n');
}
}
return 0;
}
第六章
6-1
#include <stdio.h>
int min2(int a,int b) {
if (a < b)
return a;
else
return b;
}
int main(){
int a,b;
puts("请输入两个整数:");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("最小值是%d。\n",min2(a,b));
return 0;
}
6-2
#include <stdio.h>
int min3(int a,int b,int c) {
int min=a;
if(b<min) b=min;
if(c<min) c=min;
return min ;}
int main(){
int a,b,c;
puts("请输入三个整数:");
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
printf("最小值是%d。\n",min3(a,b,c));
return 0;
}
6-3
#include <stdio.h>
int cbue(int x) {
return x*x*x;
}
int main(){
int x;
printf("请输入一个整数:");
scanf("%d",&x);
printf("该整数的立方是:%d",cbue(x));
return 0;
}
6-4
#include <stdio.h>
int spr(int x) {
return x*x;
}
int pow4(int x){
return spr(x*x);
}
int main(){
int x;
printf("请输入一个整数:");
scanf("%d",&x);
printf("该整数的四次方是:%d",pow4(x));
return 0;
}
6-5
#include <stdio.h>
int sumup(int n) {
int i;
int tmp=0;
for(i=1;i<=n;i++)
tmp+=i;
return tmp;
}
int main(){
int a;
printf("请输n的值:");
scanf("%d",&a);
printf("从1到%d和是:%d",a, sumup(a));
return 0;
}
6-6
#include <stdio.h>
void alert(int n) {
while(n-->0)
putchar('\a');
}
int main(){
int a;
printf("请输入多少次铃声");
scanf("%d",&a);
alert(a);
return 0;
}
6-7
#include <stdio.h>
void hello(void){
printf("你好.\n");
}
int main(){
hello();
return 0;
}
6-8
#include <stdio.h>
#define NUMBER 5
int min_of(const int v[],int n){
int i;
int min=v[0];
for(i=1;i<n;i++)
if(v[i]<min)
min=v[i];
return min;
}
int main(){
int i;
int v[NUMBER]={0};
printf("请输入%d个元素:",NUMBER);
for (i=0;i<NUMBER;i++)
{
printf("%d:",i+1);
scanf("%d",&v[i]);
}
printf("最小值是%d。\n",min_of(v,NUMBER));
return 0;
}
6-9
#include <stdio.h>
#define NUMBER 7
void rev_intary(int v[],int n){
int i;
for(i=0;i<n-4;i++)
{
int temp=v[i];
v[i] =v[n-1-i];
v[n-1-i]=temp;
}
}
int main(){
int i;
int x[NUMBER];
for(i=0;i<NUMBER;i++) {
printf("x[%d]", i);
scanf("%d", &x[i]);
}
rev_intary(x,NUMBER);
puts("倒序排列了!");
for (i=0;i<NUMBER;i++)
{
printf("x[%d]:%d\n",i,x[i]);
}
return 0;
}
6-10
#include <stdio.h>
#define NUMBER 7
void rev_intary(int v[], int n) {
int i;
for (i = 0; i < n / 2; i++) {
int temp = v[i];
v[i] = v[n - 1 - i];
v[n - 1 - i] = temp;
}
}
void intary_rcpy(int v1[], const int v2[], int n) {
int i;
for (i = 0; i < n; i++) {
v1[i] = v2[i];
}
}
int main() {
int i;
int v1[NUMBER];
int v2[NUMBER];
for (i = 0; i < NUMBER; i++) {
printf("v[%d]: ", i);
scanf("%d", &v2[i]);
}
rev_intary(v2, NUMBER);
intary_rcpy(v1, v2, NUMBER);
puts("倒序排列了!");
for (i = 0; i < NUMBER; i++) {
printf("v2[%d]: %d\n", i, v2[i]);
}
return 0;
}
6-11
#include <stdio.h>
#define NUMBER 7
#define FAILED -1
int search_idx(const int v[], int idx[], int key, int n) {
int i;
int temp = 0;
for (i = 0; i < n; i++) {
if (v[i] == key) {
idx[temp] = i;
temp += 1;
}
}
return (temp > 0) ? temp : FAILED;
}
int main() {
int i, ky, y;
int idx[NUMBER], vx[NUMBER + 1];
for (i = 0; i < NUMBER; i++) {
printf("vx[%d]:", i);
scanf("%d", &vx[i]);
}
printf("要查找的值:");
scanf("%d", &ky);
y = search_idx(vx, idx, ky, NUMBER);
if (y == FAILED)
puts("\a查找失败。");
else
printf("%d", y);
return 0;
}
6-12
#include <stdio.h>
void mat_mul(const int a[4][3],const int b [3][4],int c[4][3]){
int i, j, k;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
c[i][j] = 0; }
for (k = 0; k < 3; k++) {
c[i][j] += a[i][k] * b[k][j];
}
}
}
int main(){
int i,j;
int tensu1[4][3],tensu2[3][4],tensu3[3][3];
puts("请输入4行3列矩阵元素");
for(i=0;i<4;i++){
for(j=0;j<3;j++){
printf("tensu[%d][%d]=",i,j);
scanf("%d",&tensu1[i][j]);
}
}
puts("请输入3行4列矩阵元素");
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("[tensu2[%d][%d]=",i,j);
scanf("%d",&tensu1[i][j]);
}
}
mat_mul(tensu1,tensu2,tensu3);
printf("两个矩阵的乘积为:\n");
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%4d", tensu3[i][j]);
}
putchar('\n');
}
return 0;
}
6-13
#include <stdio.h>
void mat_add(const int a[4][3], const int b[4][3], int c[2][4][3]) {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
c[0][i][j] = a[i][j]; // 存储第一次考试的分数
c[1][i][j] = b[i][j]; // 存储第二次考试的分数
}
}
}
void mat_print(const int m[4][3]) {
int i, j;
for (i = 0; i < 4; i++) {
for (j = 0; j < 3; j++) {
printf("%4d", m[i][j]);
}
putchar('\n');
}
}
int main() {
int tensu1[4][3] = {{91, 63, 78}, {67, 72, 46}, {89, 34, 53}, {32, 54, 34}};
int tensu2[4][3] = {{97, 67, 82}, {73, 43, 46}, {97, 56, 21}, {85, 46, 35}};
int sum[2][4][3];
mat_add(tensu1, tensu2, sum);
puts("第一次考试的分数");
mat_print(tensu1);
puts("第二次考试的分数");
mat_print(tensu2);
puts("总分(储存在三维数组中)");
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 4; j++) {
for (int k = 0; k < 3; k++) {
printf("%4d", sum[i][j][k]);
}
putchar('\n');
}
}
return 0;
}
6-14
#include <stdio.h>
int fx;
int main(){
int i;
static double sa[5];
for(i=0;i<5;i++)
printf("sa[%d]=%.1f\n",i,sa[i]);
return 0;
}
6-15
#include <stdio.h>
int x;
void put_count(){
printf("put_count:第%d次",x+1);
x++;
putchar('\n');
}
int main (){
int i,j;
printf("要调用多少次:");
scanf("%d",&i);
for(j=0;j<i;j++){
put_count();
}
return 0;
}
第八章
8-1
#include <stdio.h>
#define diff(x,y) ((x)-(y))
int main()
{
int x,y;
printf("请输入两个整数:");
scanf("%d %d",&x,&y);
printf("两数之差为%d。\n",x>y?diff(x,y):diff(y,x));
return 0;
}
8-3
#include <stdio.h>
#define swap(type,a,b) {type temp;temp=(a);(a)=(b);(b)=temp;}
int main()
{
int x,y;
printf("x = "); scanf("%d",&x);
printf("y = "); scanf("%d",&y);
swap(int,x,y);
printf("这两个数已经互换了。\n");
printf("x = %d\n",x);
printf("y = %d\n",y);
return 0;
}
8-4
#include <stdio.h>
# define NUMBER 5
void bsort(int a[],int n){
int i,j;
for(i=n-1;i>0;i--){
for(j=0;j<i;j++){
if(a[j]<a[j+1]){
int temp =a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
}
int main(){
int i;
int height[NUMBER];
printf("请输入%d人的身高。\n",NUMBER);
for(i=0;i<NUMBER;i++){
printf("%2d号:",i+1);
scanf("%d",&height[i]);
}
bsort(height,NUMBER);
puts("按降序排列。");
for(i=0;i<NUMBER;i++){
printf("%2d号:%d\n",i+1,height[i]);
}
return 0;
}
8-5
#include <stdio.h>
enum sex {male,female};
enum season {spring=1,summer,autumn,winter};
void select_sex(enum sex m){
switch(m){
case male:printf("先生"); break;
case female:printf("女士");break;
default :printf("请正确选择性别!"); break;
}
}
void select_season (int n){
switch (n)
{
case spring : puts("你最喜欢的是春季。"); break;
case summer : puts("你最喜欢的是夏季。"); break;
case autumn : puts("你最喜欢的是秋季。"); break;
case winter : puts("你最喜欢的是冬季。"); break;
default : puts("请正确选择季节。"); break;
}
}
int main()
{
enum sex a;
int b;
printf("请选择你的性别【0…男士】【1…女士)】:");
scanf("%d",&a);
printf("你最喜欢的季节是【1…春季】【2…夏季】【3…秋季】【4…冬季】:");
scanf("%d",&b);
select_sex(a);
select_season(b);
return 0;
}
8-6
#include <stdio.h>
int factorial(int n) {
int result = 1;
for (int i = 1; i <= n; i++)
result *= i;
return result;
}
int main() {
int num;
printf("请输入一个整数:");
scanf("%d", &num);
if (num < 0) {
printf("阶乘只定义于非负整数。\n");
} else {
printf("该整数的阶乘为 %d.\n", factorial(num));
}
return 0;
}
8-7
#include<stdio.h>
int combination(int n,int r);
int main(void)
{
int n;
int r;
do
{
printf("请输入整数n:");
scanf("%d",&n);
printf("请输入整数r:");
scanf("%d",&r);
if(n<=0||r<0||n<r)
{
puts("请输入正确数量!");
}
}while(n<=0||r<0||n<r);
printf("%d个整数中取%d个整数的组合数为%d。\n",n,r,combination(n,r));
return 0;
}
int combination(int n,int r)
{
if (r == 1)
{
return n;
}
else if (r==0 || r==n)
{
return 1;
}
else
{
return combination(n-1,r-1)+combination(n-1,r);
}
}
8-8
#include <stdio.h>
int gcd(int x, int y) {
if (y == 0) {
return x;
} else {
return gcd(y, x % y);
}
}
int main() {
int x = 48;
int y = 18;
int result = gcd(x, y);
printf("GCD of %d and %d is %d\n", x, y, result);
return 0;
}
8-9
#include <stdio.h>
int main(){
int i=1,ch;
while((ch=getchar())!=EOF){
switch(ch){
case '\n': i++; break;
}
}
printf("标准输入中出现的行数:%d",i);
return 0;
}
8-10
#include <stdio.h>
int main(){
int i,ch;
int cnt[10]={0};
while((ch=getchar())!=EOF){
if(ch>='0'&&ch<='9')
cnt[ch-'0']++;
}
puts("数字字符串的出现次数");
for(i=0;i<10;i++){
printf("%d:",i);
for (int j = 0; j < cnt[i]; j++) {
putchar('*');}
putchar('\n');
}
return 0;
}
第九章
9-1
#include <stdio.h>
int main(){
char str[]="ABC\0DEF";
printf("字符串str为\"%s\"。\n",str);
return 0;
}
9-2
#include <stdio.h>
int main()
{
char s[]="ABC";
s[0]='\0';
printf("字符串s为%s。\n",s);
return 0;
}
9-3
#include <stdio.h>
#define NUMBER 10
int myStrcmpWithoutPointers(const char str1[], const char str2[]) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
int main()
{
int i;
char s[NUMBER][128];
for(i=0;i<NUMBER;i++){
printf("s[%d]:",i);
scanf("%s",s[i]);
if (myStrcmpWithoutPointers(s[i], "$$$$$") == 0)
break;
}
for(i=0;i<NUMBER;i++)
printf("s[%d]=\"%s\"\n",i,s[i]);
return 0;
}
9-4
#include <stdio.h>
void null_string(char s[]){
s[0] = '\0';
}
int main(){
char s[] = "abc";
null_string(s);
printf("该字符串为: \"%s\"", s);
return 0;
}
9-5
#include <stdio.h>
int str_char(const char s[],int c){
int i=0;
while(s[i])
{
if(s[i]=='c'){
return i;
}
i++;
}
return -1;
}
int main() {
char s[] = "example";
int index = str_char(s, 'c');
if (index != -1) {
printf("字符 'c' 在字符串中的索引是 %d\n", index);
} else {
printf("字符 'c' 未在字符串中找到\n");
}
return 0;
}
9-6
#include <stdio.h>
int str_char(const char s[],int c){
int i=0,j=0;
while(s[i])
{
if(s[i]=='c'){
j+=1;
}
i++;
}
return j;
}
int main() {
char s[] = "cexcamplec";
int index = str_char(s, 'c');
if (index != 0) {
printf("字符 'c' 有: %d个\n", index);
} else {
printf("字符 'c' 未在字符串中找到\n");
}
return 0;
}
9-7
#include <stdio.h>
void put_stringn(const char s[], int n) {
for (int i = 0; i < n; i++) {
for (int j = 0; s[j] != '\0'; j++) {
putchar(s[j]);
}
}
}
int main() {
int j;
char str[128];
printf("请输入字符: ");
scanf("%s", str);
printf("要重复多少次:");
scanf("%d", &j);
printf("%s字符重复%d次为:", str, j);
put_stringn(str, j);
printf(".\n");
return 0;
}
9-8
#include <stdio.h>
void put_string(const char s[])
{int len=0;
while(s[len])
len++;
int i;
for(i=len-1;i>=0;i--)
putchar(s[i]);
}
int main()
{
char str[128];
printf("请输入一个字符串:");
scanf("%s",str);
printf("字符串\"%s\"逆向后:",str);
put_string(str);
return 0;
}
9-9
#include <stdio.h>
#define NUMBER 128
void put_stringn(char s[]) {
int len = 0;
while (s[len] != '\0') {
len++;
}/*计算字符串长度*/
for (int i = 0; i < len / 2; i++) {
char temp = s[i];
s[i] = s[len - 1 - i];
s[len - 1 - i] = temp;
}
}
int main() {
char str[NUMBER];
printf("请输入字符: ");
scanf("%s", str);
printf("%s字符的逆向显示:", str);
put_stringn(str);
printf("%s.\n", str);
return 0;
}
9-10
#include <stdio.h>
void del_digit(char s[])
{
int i = 0;
int j = 0;
char temp[128] = {0};
while (s[i])
{
if (s[i] < '0' || s[i] > '9')
{
temp[j] = s[i];
j++;
}
i++;
}
j = 0;
while (temp[j])
{
s[j] = temp[j];
j++;
}
s[j] = '\0';
}
int main()
{
int i;
char str[128];
printf("请输入一个字符串:");
scanf("%s", str);
del_digit(str);
printf("删除数字后:%s\n", str);
return 0;
}
9-11
#include <stdio.h>
#define NUMBER1 10
#define NUMBER2 128
void put_strary(const char s[][NUMBER2], int n) {
int i;
for (i = 0; i < n; i++)
printf("s[%d]=\"%s\"\n", i, s[i]);
}
int myStrcmpWithoutPointers(const char str1[], const char str2[]) {
int i = 0;
while (str1[i] != '\0' && str2[i] != '\0') {
if (str1[i] != str2[i]) {
return str1[i] - str2[i];
}
i++;
}
return str1[i] - str2[i];
}
int main() {
int i;
char cs[NUMBER1][NUMBER2];
for (i = 0; i < NUMBER1; i++) {
printf("s[%d]:", i);
scanf("%s", cs[i]);
if (myStrcmpWithoutPointers(cs[i], "$$$$$") == 0)
break;
}
put_strary(cs, i);
return 0;
}
9-12
#include <stdio.h>
int str_len(char s[]){
int len=0 ;
while(s[len]!='\0'){
len++;
}
return len;
}
void rev_string(char s[][128], int n) {
int i, j;
for (i = 0; i < n; i++) {
int len = str_len(s[i]);
for (j = 0; j < len / 2; j++) {
char temp = s[i][j];
s[i][j] = s[i][len - 1 - j];
s[i][len - 1 - j] = temp;
}
}
}
int main() {
char strings[][128] = {"SEC", "ABC"};
int num_strings = 2;
rev_string(strings, num_strings);
for (int i = 0; i < num_strings; i++) {
printf("%s\n", strings[i]);
}
return 0;
}
第十章
10-1
#include <stdio.h>
void adjust_point(int *n){
if(*n<0)
*n=0;
if(*n>100)
*n=100;
}
int main(){
int i;
printf("请输入一个数字:");
scanf("%d",&i);
adjust_point(&i);
printf("该数字为:%d",i);
return 0;
}
10-2
10-3
#include <stdio.h>
void sort3(int *n1,int *n2,int *n3)
{
int temp;
if(*n1>*n2)
{
temp=*n1;
*n1=*n2;
*n2=temp;
}
if(*n1>*n3)
{
temp=*n1;
*n1=*n3;
*n3=temp;
}
if(*n2>*n3)
{
temp=*n2;
*n2=*n3;
*n3=temp;
}
}
int main()
{
int a,b,c;
printf("整数a:"); scanf("%d",&a);
printf("整数b:"); scanf("%d",&b);
printf("整数c:"); scanf("%d",&c);
sort3(&a,&b,&c);
printf("a = %d\nb = %d\nc = %d\n",a,b,c);
return 0;
}