IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 【C】基础练习 -> 正文阅读

[C++知识库]【C】基础练习

2019年刚学c的一些题目整理。

入门

R7-2 宇宙无敌大招呼

据说所有程序员学习的第一个程序都是在屏幕上输出一句“Hello World”,跟这个世界打个招呼。作为天梯赛中的程序员,你写的程序得高级一点,要能跟任意指定的星球打招呼。

输入格式:
输入在第一行给出一个星球的名字S,是一个由不超过7个英文字母组成的单词,以回车结束。

输出格式:
在一行中输出Hello S,跟输入的S星球打个招呼。

输入样例:

Mars

输出样例:

Hello Mars

代码:

#include<stdio.h>
int main()
{
	char s[7];
	scanf("%s",s);
	printf("Hello %s",s);
	return 0;
 } 

R7-6 计算平均分

已知某位学生的数学、英语和计算机课程的成绩分别是87分、72分和93分,求该生3门课程的平均成绩(结果按整型输出)。

输入格式:
本题无输入

输出格式:

math = 87, eng = 72, comp = 93, average = 计算所得的平均成绩

代码:

#include<stdio.h>
int main()
{
    int math, eng, comp, average;
    math=87;
    eng=72;
    comp=93;
    average=(math+eng+comp)/3;

    printf("math = 87, eng = 72, comp = 93, average = %d",average);
    return 0;
}

R7-10 逆序的三位数

程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

输入格式:
每个测试是一个3位的正整数。

输出格式:
输出按位逆序的数。

输入样例:

123

输出样例:

321

代码:

#include <stdio.h>
int main(void)
{
	int temp=0,number=0;
	scanf("%d",&number);
	if(number%10!=0)
	{
		temp=number%10*100;
	}
	number/=10;
	if(number%10!=0)
	{
		temp+=number%10*10;
	}
    number/=10;
	if(number%10!=0)
	{
		temp+=number%10;
	}
	printf("%d",temp);
	return 0;
}

选择

2-02 比较大小

本题要求将输入的任意3个整数从小到大输出。

输入格式:
输入在一行中给出3个整数,其间以空格分隔。

输出格式:
在一行中将3个整数从小到大输出,其间以“->”相连。

输入样例:

4 2 8

输出样例:

2->4->8

代码:

#include <stdio.h>

int main()
{
	int a,b,c,s;
	scanf("%d %d %d",&a,&b,&c);
	if(b>=c)
	{
        s=b;
		b=c;
		c=s;
	}
	if(a>=b)
	{
	s=a;
	a=b;
	b=s;
	     if(b>=c)
	{
        s=b;
		b=c;
		c=s;
	}
	}
	printf("%d->%d->%d",a,b,c);
	return 0;
}
   

2-06 计算火车运行时间

本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

输入格式:
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。

输出格式:
在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。

输入样例:

1201 1530

输出样例:

03:29

代码:

#include<stdio.h>
int main()
{
    int s,e,hh,mm;
	scanf("%d %d",&s,&e);

	if((s-s/100*100)>(e-e/100*100))
	{
	  hh=(e/100-s/100)-1;
	  mm=60-(s-s/100*100)+(e-e/100*100);
	
	}
	else
	{
	  hh=(e/100)-(s/100);
	  mm=(e-e/100*100)-(s-s/100*100);
	
	}
	if(hh<10)
	{   if(mm<10)
		{printf("0%d:0%d",hh,mm);}
	    else
		{printf("0%d:%d",hh,mm);}
	}
	else if(mm<10)
	{printf("%d:0%d",hh,mm);}
	else
	printf("%d:%d",hh,mm);
    return 0;
}

2-11 两个数的简单计算器

本题要求编写一个简单计算器程序,可根据输入的运算符,对2个整数进行加、减、乘、除或求余运算。题目保证输入和输出均不超过整型范围。

输入格式:
输入在一行中依次输入操作数1、运算符、操作数2,其间以1个空格分隔。操作数的数据类型为整型,且保证除法和求余的分母非零。

输出格式:
当运算符为+、-、*、/、%时,在一行输出相应的运算结果。若输入是非法符号(即除了加、减、乘、除和求余五种运算符以外的其他符号)则输出ERROR。

输入样例1:

-7 / 2

输出样例1:

-3

输入样例2:

3 & 6

输出样例2:

ERROR

代码:

#include<stdio.h>
int main(void) 
{
    int a,b;
    char operate;
    scanf("%d %c %d", &a, &operate, &b);
    switch (operate) 
    {
        case '+' :
            printf("%d", a+b); 
            break;
        case '-' :
            printf("%d", a-b); 
            break;
        case '*' :
            printf("%d", a*b); 
            break;
        case '/':
            printf("%d", a/b); 
            break;
        case '%':
            printf("%d", a%b); 
            break;
        default :
            printf("ERROR");
    }
    return 0;
}

循环

6-01 输出华氏-摄氏温度转换表

输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F?32)/9,其中:C表示摄氏温度,F表示华氏温度。

输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。

输出格式:
第一行输出:“fahr celsius”

接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。

若输入的范围不合法,则输出"Invalid."。

输入样例1:

32 35

输出样例1:

fahr celsius
32   0.0
34   1.1

输入样例2:

40 30

输出样例2:

Invalid.

代码:

#include <stdio.h>
int main()
{
 int lower,upper;
 float c,f;
 scanf("%d %d",&lower,&upper);
   if(lower>upper || upper>100 || lower>100)
 {
   printf("Invalid.");
 }
  else
 { printf("fahr celsius\n");
   for (f=lower;f<=upper;f=f+2)
   {
	   c = 5 *(f-32)*1.0/ 9;
	   printf("%.f%6.1f\n",f,c);
   }
 
 }
   
 return 0;
}

6-03 求阶乘序列前N项和

本题要求编写程序,计算序列 1!+2!+3!+? 的前N项之和。

输入格式:
输入在一行中给出一个不超过12的正整数N。

输出格式:
在一行中输出整数结果。

输入样例:

5

输出样例:

153

代码:

#include <stdio.h>
int main()
{
	int n=0,x=1,s1=1,s2=0,y=1;

	scanf("%d",&n);
	for(;x<=n;x++)
	{
		for(;y<=x;y++)
		{s1=s1*y;}
		s2=s1+s2;

	}
	printf("%d",s2);


	return 0;
}

6-05 统计素数并求和

本题要求统计给定整数M和N区间内素数的个数并对它们求和。

输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。

输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。

输入样例:

10 31

输出样例:

7 143

代码:

#include<stdio.h>
#include<math.h>
int main()
{  
    int a,b,i,m,l=0,sum=0,num=0;
     scanf("%d %d",&a,&b);
      for(i=a;i<=b;i++)
        {for(m=1;m<=i;m++)
          {
           if(i%m!=0) l++;
          }
         if(l==i-2) 
          {
           sum=sum+i; num++;
          }
           l=0;
        }
    printf("%d %d",num,sum);
  return 0;
}

6-06 猴子吃桃问题

一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?

输入格式:
输入在一行中给出正整数N(1<N≤10)。

输出格式:
在一行中输出第一天共摘了多少个桃子。

输入样例:

3

输出样例:

10

代码:

#include <stdio.h>
int main()
{
	int n,sum=1,i=1;
	scanf("%d",&n);
	for(;i<=n-1;++i)
	{sum=2*(sum+1);}
	printf("%d",sum);

	return 0;
}

函数

7-1 简单阶乘计算

本题要求实现一个计算非负整数阶乘的简单函数。

函数接口定义:

int Factorial( const int N );

其中N是用户传入的参数,其值不超过12。如果N是非负整数,则该函数必须返回N的阶乘,否则返回0。

裁判测试程序样例:

#include <stdio.h>

int Factorial( const int N );

int main()
{
    int N, NF;
    
    scanf("%d", &N);
    NF = Factorial(N);
    if (NF)  printf("%d! = %d\n", N, NF);
    else printf("Invalid input\n");

    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

5

输出样例:

5! = 120

代码:

int Factorial( const int N )
{   int n=N;
int NF=1;
if(n<0 || n>12)
	return 0;
else
{ if(n==0 || n==1)
    {return NF;}
  else
   {while(n>0)
     { NF=NF*n;
       n--;
     }
     return NF;
   }

}
return NF;
}

7-14 十进制转换二进制

本题要求实现一个函数,将非负整数n转换为二进制后输出。

函数接口定义:

void dectobin( int n );

函数dectobin应在一行中打印出二进制的n。建议用递归实现。

裁判测试程序样例:

#include <stdio.h>

void dectobin( int n );

int main()
{
    int n;
    
    scanf("%d", &n);
    dectobin(n);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

10

输出样例:

1010

代码:

void dectobin( int n )
{
	int result=0;
		
	if(n==0)
    {
		printf("0");
	} else if(n==1)
    {
		printf("1"); 
	}
    else
    {		        
		dectobin(n/2);
		result=n%2;  		
		printf("%d",result); 
	}                         
}

数组

8-01 查找指定字符

本题要求编写程序,从给定字符串中查找某指定的字符。

输入格式:
输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出格式:
如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例1:

m
programming

输出样例1:

index = 7

输入样例2:

a
1234

输出样例2:

Not Found

代码:

#include <stdio.h>
int main()
{
	int i, index, count;
	char a, ch, str[80];
	scanf("%c\n", &a);
	i=0;
	index=-1;
	count=0;
	ch=getchar();
	for(i=0; ch!='\n'; i++){
		str[i]=ch;
		count++;
		ch=getchar();
	}
	for(i=0; i<count; i++)
		if(a==str[i])
			index=i;
		if(index!=-1)
			printf("index = %d", index);
		else
			printf("Not Found");
			
	return 0;
}

8-02 选择法排序

本题要求将给定的n个整数从大到小排序后输出。

输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:
4
5 1 7 6
输出样例:
7 6 5 1

代码:

#include <stdio.h>

int main()
{
	int n,j,i,t;
	int num[10];

	scanf("%d",&n);

	for(i=0;i<n;i++)
	scanf("%d",&num[i]);

	for(j=0;j<n-1;j++)
	{
		for(i=j+1;i<n;i++)
		{
			if(num[j]<num[i])
			{t=num[j];
			num[j]=num[i];
			num[i]=t;
			}
	}
  }
	
printf("%d",num[0]);
for(i=1;i<n;i++)
{printf(" %d",num[i]);}
 

return 0;
}

8-3 判断上三角矩阵

上三角矩阵指主对角线以下的元素都为0的矩阵;主对角线为从矩阵的左上角至右下角的连线。
本题要求编写程序,判断一个给定的方阵是否上三角矩阵。

输入格式:
输入第一行给出一个正整数T,为待测矩阵的个数。接下来给出T个矩阵的信息:每个矩阵信息的第一行给出一个不超过10的正整数n。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:
每个矩阵的判断结果占一行。如果输入的矩阵是上三角矩阵,输出“YES”,否则输出“NO”。

输入样例:

3
3
1 2 3
0 4 5
0 0 6
2
1 0
-8 2
3
1 2 3
1 4 5
0 -1 6

输出样例:

YES
NO
NO

代码:

#include <stdio.h>

int MatScan(int n,int str[10][10]);
int MatJudge(int n,int str[10][10]);

int main()
{
int T,n,j,i;
int str[10][10];

scanf("%d",&T);
for(j=0;j<T;j++)
{   scanf("%d",&n);
	
	str[10][10]=MatScan(n,str);
	
	if(MatJudge(n,str)==0)
		printf("NO\n");
	else
		printf("YES\n");
     
}
return 0;


}

int MatScan(int n,int str[10][10])
{int i,j;
  for(j=0;j<n;j++)
  {
    for(i=0;i<n;i++)
	scanf("%d",&str[j][i]);
    
  }
  return str[10][10];
}

int MatJudge(int n,int str[10][10])
{
  int j,i,index=1;
  for(j=1;j<n;j++)
  {
	  for(i=0;i<j;i++)
	  {
		  if(str[j][i]!=0)
            index=0;
		  break;
	  }
  }
  return index;
}

指针

9-5 字符串的连接

本题要求实现一个函数,将两个字符串连接起来。

函数接口定义:

char *str_cat( char *s, char *t );

函数str_cat应将字符串t复制到字符串s的末端,并且返回字符串s的首地址。

裁判测试程序样例:

#include <stdio.h>
#include <string.h>

#define MAXS 10

char *str_cat( char *s, char *t );

int main()
{
    char *p;
    char str1[MAXS+MAXS] = {'\0'}, str2[MAXS] = {'\0'};
    
    scanf("%s%s", str1, str2);
    p = str_cat(str1, str2);
    printf("%s\n%s\n", p, str1);
    
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

abc
def

输出样例:

abcdef
abcdef

代码:

char *str_cat( char *s, char *t )
{
	int i;
	char *str=s;
for(i=0;*s;i++)
 {str[i]=*s;
     s++;}
for(;*t;i++)
{
	
    str[i]=*t;
	
    t++;
}


str[i]='\0';
return str;

}

9-11 计算职工工资

给定N个职员的信息,包括姓名、基本工资、浮动工资和支出,要求编写程序顺序输出每位职员的姓名和实发工资(实发工资=基本工资+浮动工资-支出)。

输入格式:
输入在一行中给出正整数N。随后N行,每行给出一位职员的信息,格式为“姓名 基本工资 浮动工资 支出”,中间以空格分隔。其中“姓名”为长度小于10的不包含空白字符的非空字符串,其他输入、输出保证在单精度范围内。

输出格式:
按照输入顺序,每行输出一位职员的姓名和实发工资,间隔一个空格,工资保留2位小数。

输入样例:

3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80

输出样例:

zhao 565.00
qian 430.00
zhou 630.00

代码:

#include <stdio.h>

struct staff
{
char name[10];
float basicmoney;
float wavemoney;
float afford;
float realmoney;
};

int main()
{int i=0,n;
struct staff date[1000];

scanf("%d",&n);
for(;i<n;i++)
{scanf("%s %f %f %f",date[i].name,&date[i].basicmoney,&date[i].wavemoney,&date[i].afford);}
for(i=0;i<n;i++)
{
date[i].realmoney =date[i].basicmoney+date[i].wavemoney-date[i].afford;
printf("%s %.2f\n",date[i].name,date[i].realmoney);
}
return 0;
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-24 20:38:18  更:2022-09-24 20:42:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 10:19:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码