3.
#include <stdio.h> int main(void) { int a[6][6], i, j, m, n, sum; printf("Input m, n:"); scanf("%d%d",&m,&n); printf("Input array:\n"); for(i = 0; i < m; i++) /* 调试时设置断点 */ for(j = 0; i < n; j++) scanf("%d",&a[i][j]); sum = 0; /* 调试时设置断点 */ for( i = 0; i < m; i++){ for( j = 0; j < n; j++) sum = sum + a[i][j]; printf("sum of row %d is %d\n",i,sum); /* 调试时设置断点 */ } return 0; }
本题求二维数组每行的和,原程序运行无编译错误但功能未实现。
6. #include <stdio.h> #include <string.h> int main(void) { int i, s; char str[80]; i = 0; while((str[i] = getchar( )) != "\n") i++; str[i] = ‘\0‘; for(i = 0; i < 80; i++) if(str[i] <= ‘0‘ || str[i] >= ‘9‘) s = s * 10 + str[i]; printf("%d\n",s); return 0; }
本程序目的是倒序输出字符,编译出错,原因及修改如下图。
5.1读入若干整数,找出最大值,最小值及位于数组的位置;
#include <stdio.h> int main() { int a[10],i,j,t,imax,imin,max,min,N; scanf("%d",&N); for(i = 0; i < N; i++) { scanf("%d",&a[i]); } t=0; max=a[0]; min=a[0]; imax=0; imin=0; for(i=0;i<N;i++) { if(a[i]>max) { max=a[i]; imax=i; } } for(i=0;i<N-1;i++) { if(a[i]<min) { min=a[i]; imin=i; } } printf("最大值%d,数组位置a[%d],最小值%d,数组位置a[%d]",max,imax,min,imin); return 0; }
5.2 读入若干整数,输入要查找的整数X,输出X第一个位置或not found;
#include <stdio.h> int main() { int n,x,N,i,j,t; long a[20]; scanf("%d %d",&n,&x); for(t=0;t<n;++t) { scanf("%ld",&a[t]); } for(i=0;i<n;++i) { if(a[i]==x) { j=i; printf("a[%d]",j); break; } } if(i>=n) { printf("Not Found\n"); } return 0; }
5.3 交换排序(降序);
#include <stdio.h> #define N 10 int main(void) { int a[N]; int i,j,temp; for (i=0;i<N;i++){ scanf("%d",&a[i]); } for (i=0;i<N-1;i++) { for (j = 0; j < N - 1; j++) { if (a[j] < a[j + 1]) { temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } for (i=0;i<N;i++){ printf("%4d",a[i]); } return 0; }
5.4 选择排序(升序);
#include <stdio.h> int main(void) { const int N = 10; int a[N], i, j , t; for(i = 0; i < N; i++) { scanf("%d", &a[i]); } for(j = 0; j <3; j++){ int idx; idx = j; for(i = j + 1; i < N ; i++){ if(a[i] < a[idx]) { idx = i; } } if(idx != j) { t = a[idx] ; a[idx] = a[j]; a[j] = t; } } for(i = 0; i < N; i++) { printf("%d", a[i]); } return 0; }
5.5 二维数组编程;读入一个整形二维数组,找出最小值及位置,求各行数据的和 ;
#include <stdio.h> #include <malloc.h> void minp(int** ia,int r,int c,int* x,int* y,int* min) { *min=ia[0][0]; int i,j; for(i=0;i<r;i++) { for(j=0;j<c;j++) { if(*min>ia[i][j]) { *min=ia[i][j]; *x=i; *y=j; } } } } int main() { int r,c,i,j; int min,x,y; printf("输入矩阵行数和列数:"); scanf("%d%d",&r,&c); int** m=(int**)malloc(sizeof(int*)*r); for(i=0;i<r;i++) { m[i]=(int*)malloc(sizeof(int)*c); } printf("输入数据:"); for(i=0;i<r;i++) { for(j=0;j<c;j++) { scanf("%d",&m[i][j]); } } minp(m,r,c,&x,&y,&min); printf("最小值是m[%d][%d]:%d\n",x,y,min); for(i=0;i<r;i++) { free(m[i]); } free(m); return 0; }
5.6 读入一个字符串,直到遇到#为止,将字符中大小字符转为小写,小写字符转为大写。
#include <stdio.h> int main() { char str[100]; char ch; int i=0; while((ch=getchar())!=‘#‘) { if(ch<=‘z‘ && ch>=‘a‘) ch=ch-32; else if(ch>=‘A‘ && ch<=‘Z‘) ch=ch+32; str[i++]=ch; } str[i]=‘\0‘; printf("%s\n",str); return 0; }
没落实,活动过多。
看书+反复练习并理解PTA上的习题。
自测方法可以独立并在短时间完成一项程序
原文:https://www.cnblogs.com/bankhard/p/9114055.html