C语言/C++常见习题问答集锦(九)

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;
}
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五一编程

程序之路有我与你同行

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值