C语言/C++常见习题问答集锦(九)
程序之美
1、c++用指针编写fanxu函数,将输入字符串(仅包括英文数字,不含中文)反序输出
#include<bits/stdc++.h>
using namespace std;
const int maxlen=1e5 + 10;
void fanxu(char *s, int len){
char* p = s + len - 1;
do
{
putchar(*p);
p--;
}while(p>=s);
}
int main()
{
int len;
char sm[maxlen];
cin >> sm;
len = strlen(sm);
fanxu(sm, len);
return 0;
}
2、矩阵转置
输入一个mXm的整数矩阵,进行转置后输出。2<n <20
输入格式:
第1行输入矩阵的行数。 其后的 m 行 每行输入m个整数,数据之间用空格分隔。
输出格式:
输出转置后的矩阵。数据之间用空格分隔,最后 一个数据后没有空格。
输入样例:
在这里给出一组输入。例如:
5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25
结尾无空行
输出样例:
在这里给出相应的输出。例如:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
#include
#define SIZE 20 //预定义要进行转置的矩阵最大大小为 20*20
//为了函数参数传递的方便,将行和列的具体大小定义为全局变量
int column; //行
int row ;//列
//矩阵的输入函数
void inputMatrix(int a[][SIZE] , int n, int m){ //二维数组参数下标必须要确定
int i,j;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
scanf("%d",&a[i][j]);
}
}
}
//矩阵的输出函数
void outputMatrix(int b[][SIZE] , int n, int m){
int i,j;
for(i = 0;i < n;i++){
for(j = 0;j < m;j++){
printf("%d ",b[i][j]);
}
printf("\n"); //每次打印完一行后进行换行
}
}
//矩阵的转置运算
void matrixTransport(int a[][SIZE], int b[][SIZE]){
int i,j;
for(i = 0;i < row;i++){
for(j = 0; j < column ; j++){
b[i][j] = a[j][i];
}
}
}
int main()
{
//定义数组并初始化
int a[SIZE][SIZE]={0};
int b[SIZE][SIZE]={0};//定义数组,注意要初始化
//矩阵行,列数的确定
printf("请输入您要进行转置的矩阵的行数 : column = ");
scanf("%d",&column);
printf("\n请输入您要进行转置的矩阵的列数 : row = ");
scanf("%d",&row);
//函数调用及主功能实现
printf("请输入一个 %d X %d 的矩阵 \n" , column , row);
inputMatrix(a, column , row);
matrixTransport(a,b);
printf("转置后的矩阵是 :\n");
outputMatrix(b, row , column);
getchar();
return 0;
}
3、C语言,从键盘输入N,然后输出从1到N所有的数的和。
#include <stdio.h>
int main(){
int sum = 0,count = 0, n;
printf("请输入整数:");
scanf("%d", &n);
do{
sum = sum + n;
count ++;
n --;
}while(n > 0);
printf("sum:%d;count:%d\n", sum, count);
return 0;
}
4、程序提示“5 strings:”,用户输入5个字符串,程序将5个字符串降序排序,然后输出。如下:
5 strings:ads as89 812a 0as ASD{}
sorted:asd89,ads,ASD{},812a,0as
int main()
{
char abc[5][10];
char j[10];
printf("5 strings:");
for(int i = 0; i < 5; i ++){
scanf("%s", abc[i]);
}
for(int i = 0; i < 4; i++){
if(strcmp(abc[i], abc[i+1])<0)
strcpy(j, abc[i]);
strcpy(abc[i], abc[i+1]);
strcpy(abc[i+1], j);
}
printf("sorted:");
for(int i = 0; i < 4; i++){
printf("%s,", abc[i]);
}
printf("%s\n", abc[4]);
return 0;
}
5、从键盘读入一句英文,并将该句英文中所有的大写字母变为小写,其他字符不变,并输出结构
#include<stdio.h>
int main()
{
int i;
char a[100];
gets(a);
for(int i=0;a[i]!='\0';i++)
if(a[i]>='A'&&a[i]<='Z')
a[i]+=32;
puts(a);
return 0;
}
6、成绩统计成绩统计,输入一组学生成绩,以百分制表示,统计总成绩,最高分,最低分,平均分
#include "stdio.h"
int main()
{
signed int n; //因为要与-1比较,所以n定义为有符号的int类型
int max,min,sum,i;
double average;//平均分数可能出现小数
max=0,min=100,i=0,n=0,average=0,sum=0;
for(i=1;;i++)
{
scanf("%d",&n);
if(n==-1)
break;//当输入-1时表示数据输入完,必须中止循环,计算总和,均值
if(max<=n)max=n;
if(min>=n)min=n;
sum+=n;
}
average=1.0*sum/(i-1);
printf("sum=%d\naverage=%f\nmax=%d\nmin=%d\n",sum,average,max,min);
return 0;
}
7、c语言程序,输入的字符串只包含字母和星号,编写函数fun。
其功能是:删除字符串中所有的星号。编写函数时,不得使用C语言提供的字符串函数。
例如:字符串中的内容为:adgsdDSFFDdsfaADSFADS***dfskdjfs
删除后字符串中的内容应当是:adgsdDSFFDdsfaADSFADSdfskdjfs
#include<stdio.h>
int main()
{
char str[99]="";
int i=0,j=0;
gets(str);
for(;str[i]!='\0';i++)
if(str[i]!='*'){str[j]=str[i];j++;}
str[j]='\0';
puts(str);
return 0;
}