20201022-成信大-C语言程序设计-20201学期《C语言程序设计B》C-trainingExercises22
P833
源文件
#include <stdio.h>
#define MAX 20
/* userCode(<100字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n;
printf("请输入 m n: ");
scanf("%d %d", &m, &n);
printf("请输入 %d 行 %d 列矩阵:\n", m, n);
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
scanf("%d", &arrA[i][j]);
}
}
rotate(arrA, arrB, m, n); /* 调用函数进行转置 */
printf("\n转置后的矩阵为:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
printf("%5d ", arrB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include <stdio.h>
#define MAX 20
/* userCode(<100字符): 自定义函数之原型声明 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m, int n);
int main(void)
{
int arrA[MAX][MAX], arrB[MAX][MAX], i, j, m, n;
printf("请输入 m n: ");
scanf("%d %d", &m, &n);
printf("请输入 %d 行 %d 列矩阵:\n", m, n);
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
scanf("%d", &arrA[i][j]);
}
}
rotate(arrA, arrB, m, n); /* 调用函数进行转置 */
printf("\n转置后的矩阵为:\n");
for (i=0; i<n; i++)
{
for (j=0; j<m; j++)
{
printf("%5d ", arrB[i][j]);
}
putchar('\n');
}
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void rotate(int arrA[][MAX], int arrB[][MAX], int m, int n)
{
int i, j;
for (i=0; i<m; i++)
{
for (j=0; j<n; j++)
{
arrB[j][i] = arrA[i][j];
}
}
}
P242
源文件
#include <stdio.h>
______________________________ /* userCode(<50字符): 自定义函数1之原型声明 */
______________________________ /* userCode(<50字符): 自定义函数2之原型声明 */
int main(void)
{
int num[16], count;
printf("请输入若干个数: ");
______________________________ /* userCode(<30字符): 调用函数读入数据到num中并统计个数 */
printf("\n共%d个数,倒序为: ", count);
______________________________ /* userCode(<30字符): 调用函数倒序输出num的所有元素 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include <stdio.h>
int inputData(int num[16]); /* userCode(<50字符): 自定义函数1之原型声明 */
void printData(int num[16], int count); /* userCode(<50字符): 自定义函数2之原型声明 */
int main(void)
{
int num[16], count;
printf("请输入若干个数: ");
count = inputData(num); /* userCode(<30字符): 调用函数读入数据到num中并统计个数 */
printf("\n共%d个数,倒序为: ", count);
printData(num, count); /* userCode(<30字符): 调用函数倒序输出num的所有元素 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int inputData(int num[16])
{
int i;
for (i = 0; i < 16; i++)
{
scanf("%d", &num[i]);
if (num[i] == -1)
{
break;
}
}
return i;
}
void printData(int num[16], int count)
{
int i;
for (i = count - 1; i >= 0; i--)
{
printf("%d ", num[i]);
}
}
P780
源文件
#include<stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int Len;
char String[101] = "?????????????????????????????????????????????????????????????";
printf("input a string: ");
______________________________ /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */
printf("\nThe string lenth is: %d\n", Len);
printf("The string is: %s\n", String);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include<stdio.h>
/* userCode(<50字符): 自定义函数之原型声明 */
int inputString(char str[101]);
int main(void)
{
int Len;
char String[101] = "?????????????????????????????????????????????????????????????";
printf("input a string: ");
Len = inputString(String); /* userCode(<50字符): 调用函数实现输入并统计输入字符个数 */
printf("\nThe string lenth is: %d\n", Len);
printf("The string is: %s\n", String);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
int inputString(char str[101])
{
int i;
int ret;
/*
这里要注意题目的要求:
(2)若用户输入时输入了很多字符,则仅读入前100个字符。
这一点要求的意思就是只能读前100个字符,即下标只能用到99,不能用到100
*/
for ( i = 0; i < 100; i++) // 读前100个字符,而0-99的下标就已经是100个字符了,最后一个必须是'\0'
{
ret = scanf("%c", &str[i]);
if (str[i]=='\n' || ret == EOF)
{
break;
}
}
// 处理一行上输入的字符数量超过100时
if (i>100) // 满数组的情况,i会增长到101
{
str[100] = '\0';
}
else
{
// 不足100时
str[i] = '\0';
}
return i;
}
P817
源文件
#include<stdio.h>
#include<string.h>
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
char str[128];
printf("Input a string: ");
gets(str);
______________________________ /* userCode(<50字符): 调用函数将字符串str逆序存放 */
printf("\nThe result is: %s\n", str);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include<stdio.h>
#include<string.h>
/* userCode(<50字符): 自定义函数之原型声明 */
void flipString(char str[128]);
int main(void)
{
char str[128];
printf("Input a string: ");
gets(str);
flipString(str); /* userCode(<50字符): 调用函数将字符串str逆序存放 */
printf("\nThe result is: %s\n", str);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void flipString(char str[128])
{
int len;
int i;
char tmp;
len = strlen(str);
for ( i = 0; i < len/2; i++)
{
tmp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = tmp;
}
}
P822
源文件
#include <stdio.h>
#define maxNums 100
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int i, count, scores[maxNums];
float avgScore;
printf("Please input scores(-1 to exit): ");
for (i=0; i<maxNums; i++)
{
scanf("%d", &scores[i]);
if (-1 == scores[i])
{
break;
}
}
count = i;
______________________________ /* userCode(<50字符): 调用函数计算平均成绩 */
printf("\naverage score is %.2f.\n", avgScore);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include <stdio.h>
#define maxNums 100
/* userCode(<50字符): 自定义函数之原型声明 */
float getAvg(int scores[maxNums], int count);
int main(void)
{
int i, count, scores[maxNums];
float avgScore;
printf("Please input scores(-1 to exit): ");
for (i=0; i<maxNums; i++)
{
scanf("%d", &scores[i]);
if (-1 == scores[i])
{
break;
}
}
count = i;
avgScore = getAvg(scores, count); /* userCode(<50字符): 调用函数计算平均成绩 */
printf("\naverage score is %.2f.\n", avgScore);
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
float getAvg(int scores[maxNums], int count)
{
float sum = 0;
int i;
for (i=0; i<count; i++)
{
sum += (float)scores[i];
}
return sum / count;
}
P818
源文件
#include <stdio.h>
#define N 20
/* userCode(<50字符): 自定义函数之原型声明 */
______________________________
int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];
printf("Please input m and n: ");
scanf("%d%d", &m, &n);
printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");
______________________________ /* userCode(<50字符): 调用函数找出每一行上的最大值的列下标并按示例格式要求显示 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
修改后的文件
#include <stdio.h>
#define N 20
/* userCode(<50字符): 自定义函数之原型声明 */
void printMax(int m, int n,int juZhen[N][N]);
int main(void)
{
int m, n;
int hang, lie, juZhen[N][N];
printf("Please input m and n: ");
scanf("%d%d", &m, &n);
printf("Please input a juZhen(%d hang, %d lie):\n", m, n);
for (hang = 0; hang < m; hang++)
{
for (lie = 0; lie < n; lie++)
{
scanf("%d", &juZhen[hang][lie]);
}
}
puts("");
printMax(m,n,juZhen); /* userCode(<50字符): 调用函数找出每一行上的最大值的列下标并按示例格式要求显示 */
return 0;
}
/* User Code Begin:考生在此后完成自定义函数的设计,行数不限 */
void printMax(int m, int n,int juZhen[N][N])
{
int i, j;
int tmpMax;
int flagJ;
// 使用打擂算法实现搜索列上的最大值和最大值列下标
for ( i = 0; i < m; i++)
{
tmpMax = juZhen[i][0];
flagJ = 0;
for ( j = 0; j < n; j++)
{
if (juZhen[i][j]>tmpMax)
{
tmpMax = juZhen[i][j];
flagJ = j;
}
}
printf("The max value in line %d is %d\n", i, flagJ);
}
}