C及C++语言基础习题解集

打印带格式补考通知

#include <stdio.h>
main( )
  { float x,t; 
    printf("Please input x,t\n"); 
    scanf("%f %f", &x,&t); 
    if (x+t>=60)   
       {
       printf("**************\n");
       printf("%.1f,OK!\n",x+t);
       printf("**************\n"); }
 }

判断年份是否是闰年

#include <stdio.h>
int main( )
  { int year; 
    printf("Please input year\n"); 
    scanf("%d", &year); 
    if (year%4==0&&year%100||year%400==0)    
     { printf("**************\n");
       printf("%d,OK!\n",year);
       printf("**************\n"); } 
    else{ printf("**************\n");
       printf("Oh,No!\n");
       printf("**************\n"); } 
  }

给定三条边,计算三角形面积

#include <stdio.h>
#include <math.h>
int main()
{
    double a,b,c,s,area;
    printf("请输入可以构成三角形的三条边\n");
    scanf("%lf %lf %lf",&a,&b,&c);
    s=(a+b+c)/2;
    area=sqrt(s*(s-a)*(s-b)*(s-c));
    printf("a=%.2f,b=%.2f,c=%.2f,  s=%.2f\n",a,b,c,s);
    printf("area=%.2f\n",area);
    return 0;
}

寻找1000内的水仙花数

水仙花数是指一个三位数。其各位数字立方之和等于该数本身,如153=1+125+27

#include <stdio.h>
int main( )
{   
    int g,s,b, n=100;
    for(;n<1000;n++)
    {
       g=n%10;
       s=n/10%10;
       b=n/100;
    if(n==g*g*g+s*s*s+b*b*b)
            printf("%d ",n);
    }
    return 0;
}

寻找1000内的完数

完数是指一个数恰好等于它的因子之和如6=1+2+3

#include <iostream>
#include<math.h>
using namespace std;
int main(){
  int b,i,n=1;
  while(n<=1000){
  	b=1;
  	for(i=2;i<n;i++){
  		if(n%i==0)
  		b=b+i;
	  }
	if(b==n)
    cout<<n<<endl;
	n++;
  }
}

三个数排序

#include<stdio.h>
int main()
{int a,b,c,t;
 printf("请输入三个数");
 scanf("%d %d %d",&a,&b,&c);
 if(a<=b)
  { t=a;a=b;b=t;} 
 if (b<=c)  
 {t=b;b=c;c=t;} 
    if(a<=b)
      { t=a;a=b;b=t;}   
 printf("降序  %d,%d,%d\n", a,b,c);
 return 0;
}

九九乘法表

#include <stdio.h>
int main()
{   int n,i,j;
    for(i=1;i<=9;i++)
     for(j=1;j<=i;j++) 
     {  printf("%d*%d=%-4d",i,j,i*j);
        if(j==i)
         printf("\n");
      }
    return 0;
}

斐波那契数列问题

#include <stdio.h>
int main( )
{ 
int n,t,i,a1=1,a2=1,s=0;
printf("请输入数列项数(大于2)\n");
  scanf("%d",&n);
  printf("%5d %5d",a1,a2);
  for( i=3;i<=n;i++)
   {
    t=a1+a2;
    printf("%5d",t);
    s=s+t;
    a1=a2;
    a2=t;    
   }
  printf("\ns=%d",s);
  return 0;
}

求N的阶乘之和

#include <iostream>
#include<math.h>
using namespace std;
int main(){
int i,j,n,a=0,b;
cout<<"请输入n\n";
cin>>n;
for(i=1;i<=n;i++){
	b=1;
	for(j=1;j<=i;j++)
	{b=b*j;
	}
 a=a+b;
}
cout<<"n阶阶乘之和"<<a; 
}

swich应用(成绩分档)

#include <iostream>
#include<math.h>
using namespace std;
int main(){
int grade;
cin>>grade;
switch(grade/10){
	case 9: cout<<"A";break;
	case 8: cout<<"B";break;
	case 7: cout<<"C";break;
	case 6: cout<<"D";break;
	case 5: cout<<"E";break;
	default: cout<<"太差了"; 
	
}

}

冒泡排序(升序为例)

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
	cout<<"先生成一组20个100内整数\n";
	 int a,i;  
	 int an[100],b[100];
	 srand((unsigned)time(NULL));
	for (i = 1; i <=20; i++){ 
    an[i]= rand() % 90 + 10; //产生10-100的随机数 
    printf("an[%d]=%d\n",i,an[i]);
	}
	for (i = 1; i <=20; i++)
	b[i]=an[i]; 
	//以上生成随机数,可省略 
	//冒泡排序(升序):利用上述生成的数组或假定有一组有限范围内若干数存储于数组给定
	cout<<"排序个数" ; 
	int j,t,n;
	cin>>n;
   for(i=1;i<n;i++){
   for(j=1;j<=n-i;j++)
   if(b[j]>b[j+1])// 降序为<
   {t=b[j];
   b[j]=b[j+1];
   b[j+1]=t;
   }
   }
   for(i=1;i<=n;i++){
   printf("%d  ",b[i]);
   }  
}

选择排序(升序为例)

#include<iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
int main(){
	cout<<"先生成一组20个100内整数\n";
	 int a,i;  
	 int an[100],b[100];
	 srand((unsigned)time(NULL));
	for (i = 1; i <=20; i++){ 
    an[i]= rand() % 90 + 10; //产生10-100的随机数 
    printf("an[%d]=%d\n",i,an[i]);
	}
	for (i = 1; i <=20; i++)
	b[i]=an[i]; 
	//以上生成随机数,可省略 
	//选择排序(升序):利用上述生成的数组或假定有一组有限范围内若干数存储于数组给定
	cout<<"排序个数" ; 
	int j,t,n,k;
	cin>>n;
   	k=i;
   for(i=1;i<n;i++){
   for(j=i+1;j<=n;j++)
   if(b[j]>b[k])
   {t=b[k];
   b[k]=b[j];
   b[j]=t;
   }
   }
   for(i=1;i<=n;i++){
   printf("%d  ",b[i]);
   } 

整数插入

#include<stdio.h>
int main(){
	 int i,n,num;
	 printf("请输入整数个数"); 
	scanf("%d", &n);
	int a[1000];
	printf("请输入一组有序整数从小到大:");
	for (i = 0; i < n; i++) {
		scanf("%d", &a[i]);
	}
	printf("请输入要插入的数: ");
	scanf("%d", &num);
	for (i = n-1; i >= 0; i--) {
		if (a[i] < num) {
			a[i+1] = num;
			break;
		}
		else {
			a[i + 1] = a[i];
			a[i] = num;
		}
	}
	for (i = 0; i <= n; i++) {
		printf("%d ", a[i]);
	}
	return 0;	
}

删除字符串中单个(重复)字符

#include<bits/stdc++.h>
using namespace std;
int main(){
	char arr[100]={'0'};//直接定义时初始化	
	int i,j,n=0;	
	char target;	
	gets(arr);
	for(j=0;j<100;j++){
		if (arr[j]!=0)
		 n++;
		else break;//循环计算输入字符长度 或者用函数n=strlen(数组名);
	}
   //n = strlen(arr);
	puts(arr);
	cout<<"请输入你想要剔除的元素"; 
	cin>>target;
for(i=0;i<n;i++){
  if(arr[i]==target)
{ for(j=i+1;j<n;j++)
  {arr[j-1]=arr[j];
  }
  i--;
 n--;}
}//查找重复并剔除 
 for(i=0;i<n;i++)
 cout<<arr[i]<<" ";
cout<<"剩余字符长度"<<n<<endl;
}

判断一个数是否为素数

#include <math.h>
#include<iostream>
using namespace std;
int main()
{
	int i,j, n, tmp;
	cin>>n;
	tmp = sqrt(n);
	cout<<"平方根:"<<tmp<<endl;
	for(i = 2; i <= tmp; i++)
	{
		if(n % i == 0)	
		{cout<<"不是素数\n"<<"能被"<<i<<"整除"<<endl;break;
		}		
	}
if(i>tmp)	cout<<"是素数\n";
getchar();

}

求一元二次方程的根

#include <stdio.h>
#include "math.h"
main( )
  { float a, b, c, d, x1, x2, q; 
    printf("Please input a, b, c\n"); 
    scanf("%f,%f,%f", &a, &b, &c); 
    d=b*b-4*a*c;
    q=sqrt (d); 
    x1=(-b+q)/(2*a); 
    x2=(-b-q)/(2*a); 
    printf("d=%.2f,x1=%.2f, x2=%.2f \n ",d, x1, x2); 
  }

字符数组实行字符串比较

#include<iostream>
#include<string.h>
using namespace std;

int main()
{
	int n,i;
	char a[10],b[10];
	cout<<"请输入俩字符数组:\n";
	gets(a);
	gets(b);
	i=0;
	while(a[i]==b[i] && a[i]!='\0')
	{
		i++;
	}
	n=a[i]-b[i];
	if(n>0)
		cout<<a<<">"<<b<<endl;
	if(n<0)
		cout<<a<<"<"<<b<<endl;
	if(n==0)
		cout<<a<<"="<<b<<endl;
}

统计字符数组中英文字符的个数

#include<iostream>
#include<string.h>
using namespace std;
int main()
{
	char x,an[100];
	int n=0,i;
	cout<<"请输入一串字符串\n";
	gets(an);
	for(i=0;an[i]!='\0';i++){
	if(('z'>=an[i] &&'a'<=an[i])||(an[i]>='A'&&an[i]<='Z'))
	n++;
		}
	cout<<n;
	return 0; 
}

变式:分别统计每个小写英文字母的个数

#include<iostream>
#include<string.h>
using namespace std;
void tongji(char a[]);
int main(){
	char a[100];
	gets(a);
    tongji(a);
}
void tongji(char a[]){
	int n=0,i;
	int zf[26]={0};
	while(a[n]!='\0'){
		zf[a[n]-'a']++;
		n++;
	}
	for(i=0;i<26;i++){
	if(zf[i]!=0)
	  cout<<char('a'+i)<<"的个数:"<<zf[i]<<endl;
	}
	cout<<"其余字母数为零";
}


三角形

#include<stdio.h>
int main(){
	int i,j,n;
		printf("请输入三角形行数\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n-i;j++)
		printf(" ");
		for(j=1;j<=2*i-1;j++)
		printf("*");
		printf("\n");
	}
}

空心三角形

#include<stdio.h>
int main(){
int i,j,n;
	printf("请输入三角形行数\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n-i;j++)
		printf(" ");
		for(j=1;j<=2*i-1;j++)
		 if(i!=n)
		  {if(j==1||j==2*i-1)
		    printf("*");		 
          else
	     	printf(" ");
		  }	
		 else
		 printf("*");
		printf("\n");
		
	}}

菱形

#include<stdio.h>
int main(){
	int i,j,n;
	printf("请输入菱形边长\n");
	scanf("%d",&n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=n-i;j++)
		printf(" ");
		for(j=1;j<=2*i-1;j++)
		printf("*");
		printf("\n");
	}
	for(i=n-1;i>=1;i--)
	{for(j=1;j<=n-i;j++)
	 printf(" ") ;
	for(j=1;j<=2*i-1;j++)
	    printf("*");
	printf("\n");	
	}
	return 0;}

建系法

#include<iostream>
#include<math.h>
using namespace std;
int n,i,j;
void lingxing(int n){
	for(i=1-n;i<n;i++){
		for(j=1;j<=abs(i);j++)
			cout<<" ";
			for(j=1;j<=2*n-2*abs(i)-1;j++){
				cout<<"*";
			}		
		cout<<endl;
	}
}
int main(){
	cin>>n;
	lingxing(n);
}

空心菱形

#include <iostream>
#include<math.h>
using namespace std;
int main(){
 int i,j,n; 
 cin>>n;
  for(i=1-n;i<n;i++){
  for(j=1-n;j<n;j++){
  	if(abs(i)+abs(j)==n-1)
  	cout<<"*";
  	else
  	 cout<<" ";
  }
  cout<<endl;
}
}

计算类似1+11+111+……+11111(n)

#include <iostream>
#include<math.h>
using namespace std;
int main(){
int A,N,n,a=0,i,sum;
 cout<<"请输入初始值:\n";
 cin>>A;
 cout<<"请输入项数:\n";
 cin>>N;
 sum=0;
 for(i=0;i<N;i++){
 	a=a*10+A;
 	sum=sum+a;
 }
 cout<<sum;
}

判断刚才你输入的大小写英文字母个数

#include<stdio.h>
int main(){
char x;
	int n=0;
	printf("请输入一串字符");
	while((x=getchar())!='\n'){
if(('z'>=x &&'a'<=x)||(x>='A'&&x<='Z'))
	n++;
	}
	printf("%d",n);
	return 0; }

字符串拼接(删除内部空格)

#include<iostream>
#include<string.h>
using namespace std;
int main(){
	char zifu1[20]={'0'},zifu2[20];
	int n,k,i,j;
	gets(zifu1);
	gets(zifu2);
	n=strlen(zifu1);
	k=strlen(zifu2);
	cout<<"字符组1长度"<<n<<" "<<endl<<"字符组2长度"<<k<<endl;
	for(i=n,j=0;i<n+k+1,j<k;i++,j++)
	zifu1[i]=zifu2[j];//拼接 
	cout<<"新的字符串"; 
	puts(zifu1); 
	for(i=0;zifu1[i]!='\0';i++){
  if(zifu1[i]==' ')
{ for(j=i+1;zifu1[j]!='\0';j++)
  {zifu1[j-1]=zifu1[j];
  }
  i--;
 n--;}
	}//删除空格 
	for(i=0;i<n+k;i++)
 cout<<zifu1[i];
 return 0; 
}

一、单项选择题 1、 C语言源程序文件经过C编译程序编译连接之后生成一个后缀为( C )的文件。  A).c B).obj C).exe D).bas 2、 )完成C源文件编辑后、到生成执行文件,C语言处理系统必须执行的步骤依次为( B ) A)连接、编译 B)编译、连接 C)连接、运行 D)运行 3、 关于C语言的叙述中,不正确的是( D ) A)C程序可由一个或多个函数组成 B)C程序必须包含一个main()函数 C)C程序的基本组成单位是函数 D)注释说明只能位于一条语句的后面 4、 一个C程序的执行是从( C )。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序的main函数开始,到本程序文件的最后一个函数结束 D) 本程序文件的第一个函数开始,到本程序main函数结束 5、 以下正确的叙述是( C ) A) 在C语言中,main函数必须位于文件的开头 B) C语言每行中只能写一条语句 C) C语言本身没有输入、输出语句 D) 对一个C语言进行编译预处理时,可检查宏定义的语法错误 6、 下列选项中,不能用作标识符的是( D )。 A) _1234_ B) _1_2 C) int_2_ D) 2_int_ 7、 常数的书写格式决定了常数的类型和值,0x1011是( C ) A)8进制整型常量 B)字符常量 C)16进制整型常数 D)2进制整型常数 8、 以下4组用户定义标识符中,全部合法的一组是( D ) A)_total clu_1 sum B)if -max turb C)txt REAL 3COM D)int k_2 _001 9、 ( B )是合法的用户自定义标识符。 A) b-b B)float C)123a D) _isw 10、 以下选项中不正确的整型常量是( )。  A) 12L B) -10 C) 1,900 D) 123U 11、 表达式( C )的值是0。 A)3%5 B)3/5)0 C)3/5 D)3<5 12、 设int x=3,y=4,z=5,则下列表达式中的值为0的是 ( ) A) ‘x’&&’y’ B) x||y+z&&y-z C) x<=y D) !((x0||y>0) 等价于( )。 A)!x>0||!y>0 B)!(x>0)||!(y>0) C)!x>0&&!y>0 D)!(x>0)&&!(y>0) 14、 若变量已正确定义并赋值,表达式( )不符合C语言语法。 A)4&&3 B)+a C)a=b=5 D)int(3)14) 15、 C语句”x*=y+2;”还可以写作( ) A) x=x*y+2; B) x=2+y*x; C) x=x*(y+2); D) x=y+2*x; 16、 下列格式符中,可以用于以8进制形式输出整数的是( ) A) %d B) %o C) %ld D) %x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值