C语言基础训练题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上机训练:
●以下程序的功能是:
从键盘上输入12个整数,存放在数组a[3][4]中,现要求如下:
(1)找出这些数中的最小值,并记录它的位置(若有多个最小值,只要求找出其中一个即可);
(2)输出最小值及其位置(列出它的行、列下标)。
请完成程序填空。
#include
void main()
{
int a[3][4](1) ;
int i,j;
int min, row,col;
printf("input 12 numbers:\n");
for(i=0; i<3 ; i++ (2) )
for (j=0; j<4 (3) ; j++)
scanf("%d", &a[i][j] (4) );
min= a[0][0](5) ;
row=0;
col=0;
for(i=0; i<3 ;i++)
for (j=0; j<4; j++)
{
if( a[i][j] { min= a[i][j](7) ; row=i; col=j; } } printf("min=%d, row=%d, col=%d\n", min,row,col (8) ); } ●编写一段程序,其功能为从键盘接收一个长度不超过20个字符的字符串 (1)求该字符串中各数字其值之和,并输出该和(如字符串为”ab2CD34Efg”,则和为9); (2)按输入的相反顺序输出这个字符串。 要求:1、画出程序的算法流程图 2、编写和调试该程序 #include #define N 15 main() { char s[N]; printf("请输入不超过20字符的字符串:"); for(int i=0;i scanf("%c",&s[i]); char t[N]; printf("逆置的字符串为:"); for(int j=0;j { t[j]=s[N-1-j]; printf("%c",t[j]); } printf("\n"); int sum=0,temp; for( i = 0; s[i] != '\0'; i++) if(s[i]>='0'&&s[i]<='9') { temp=s[i]-48; sum+=temp; } printf("字符串中个数字之和为%d",sum); printf("\n"); } 以下程序可把输入的十进制无符号长整型数以十六进制数的形式输出。()#include "stdio.h" void main() { char b[17]={"0123456789ABCDEF"}; int c[8], base=16, i=0; unsigned long n; printf("请输入一个十进制整数:"); scanf("%d", &n); do { c[i] = n%16 ; n = n/16 ; i++; } while (n!=0); for (--i; i>=0; --i) printf ("%c", b[c[i]]) ; } ●编写一个程序,其功能为: 将M行N列的二维数组w中的数值,按列的顺序依次存放到一维数组a中。 例如:二维数组w中的数据为: 1 1 1 1 2 2 2 2 3 3 3 3 则一维数组a中的内容应是:1 2 3 1 2 3 1 2 3 1 2 3。 #include #define M 3 #define N 4 main() { int i,j,k=0; int K=M*N; int t[M][N] = {{1,1,1,1},{2,2,2,2},{3,3,3,3}}; int p[M*N]={0}; printf("二维数组t:\n"); for(i=0;i { for(j=0;j printf("%4d",t[i][j]); printf("\n"); } for(j=0;j for(i=0;i { p[k]=t[i][j]; k++; } printf("一维数组p:\n"); for(i=0;i printf("%4d",p[i]); printf("\n"); } ●几何证明: 设有任意正三角形ABC,其三条边BC、CA,AB上分别有一点A1、B1、C1,而且有AC1=2C1B,BA1=2A1C,CB1=2B1A。编制程序验证由线段AA1、BB1、CC1相交而成的三角形A2B2C2的面积是正三角形ABC的面积的七分之一。