1.求int型数据在内存中存储时1的个数
输入一个int型数据,计算出该int型数据在内存中存储时1的个数。
#include<stdio.h> void main() { int in,cnt=0; int yu,mo; scanf("%d",&in); for(yu=in/2,mo=in%2;yu!=0;in=yu,yu=in/2,mo=in%2) { cnt=cnt+mo; } cnt=cnt+mo; printf("%d",cnt); }
2.句子逆序
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
#include<stdio.h> void main() { int loop; char ch[100]; gets(ch); for(loop=99;loop>=0;loop--) { if((ch[loop]>=‘A‘&&ch[loop]<=‘z‘)||ch[loop]==‘ ‘) printf("%c",ch[loop]); } }
3.字符串反转
写出一个程序,接受一个字符串,然后输出该字符串反转后的字符串。
#include<stdio.h> void main() { int loop,max=0; char ch[100]; gets(ch); max=strlen(ch); for(loop=max-1;loop>=0;loop--) { printf("%c",ch[loop]); } }
4.数字颠倒
描述:
输入一个整数,将这个整数以字符串的形式逆序输出
程序不考虑负数的情况,若数字含有0,则逆序形式也含有0,如输入为100,则输出为001
#include<stdio.h> void main() { int loop,max=0; char ch[100]; gets(ch); max=strlen(ch); for(loop=max-1;loop>=0;loop--) { printf("%c",ch[loop]); } }
5.字符个数统计
编写一个函数,计算字符串中含有的不同字符的个数。字符在ACSII码范围内(0~127)。不在范围内的不作统计。
#include<stdio.h>
void main()
{
int loop,max=0;
int cnt=0;
char ch[100];
gets(ch);
max=strlen(ch);
for(loop=max-1;loop>=0;loop--)
if(ch[loop]>=0 &&ch[loop]<=127)
cnt=cnt+1;
printf("%d",cnt);
}
6.提取不重复的整数
输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。
#include<stdio.h> void main() { char ch[100]; char ch2[10]; int max; int loop; int flag=0; gets(ch); max=strlen(ch); for(loop=max-1;loop>=0;loop--) { if(ch2[ch[loop]]!=1) { ch2[ch[loop]]=1; if(flag==0&&ch[loop]!=‘0‘)flag=1; if(flag==1) printf("%c",ch[loop]); } } }
7.合并表记录
数据表记录包含表索引和数值。请对表索引相同的记录进行合并,合并后表记录为相同索引表的数值求和
#include<stdio.h> void main() { int num,loop,pos,tmp; int a[100]={0}; int b[100]={0}; scanf("%d",&num); for(loop=0;loop<num;loop++) { scanf("%d",&pos); scanf("%d",&tmp); a[pos]=a[pos]+tmp; b[pos]=1; } for(loop=0;loop<99;loop++) { if(b[loop]==1) { printf("%d\n",loop); printf("%d\n",a[loop]); } } }
8.取近似值
写出一个程序,接受一个浮点数值,输出该数值的近似整数值。如果小数点后数值大于等于5,向上取整;小于5,则向下取整。
#include<stdio.h> void main() { float in; int cnt=0; scanf("%f",&in); for(;in>1.0;in=in-1)cnt=cnt+1; if(in>=0.5)cnt=cnt+1; printf("%d",cnt); }
9.质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的所有质数的因子(如180的质数因子为2 2 3 3 5 )
#include<stdio.h>
int check(int in)
{
int loop;
if(in==2) return 1;
for(loop=2;loop<in;loop++)
{
if(in%loop==0)return 0;
else
if(in%loop!=0&&loop==in-1)
{
return 1;
}
}
}
void process(int in)
{
int i,reslut=0;
reslut=check(in);
if(reslut==1)printf("%d",in);
else
for(i=2;i<in;i++)
{
reslut=check(i);
if(reslut==1)
{
if(in%i==0)
{
printf("%d ",i);
process(in/i);
break;
}
}
}
}
void main()
{
int in;
scanf("%d",&in);
process(in);
}
10.进制转换
写出一个程序,接受一个十六进制的数值字符串,输出该数值的十进制字符串
#include<stdio.h> int change(char ch) { int a; switch(ch){ case ‘A‘: case ‘a‘: a=10; break; case ‘B‘: case ‘b‘: a=11; break; case ‘C‘: case ‘c‘: a=12; break; case ‘D‘: case ‘d‘: a=13; break; case ‘E‘: case ‘e‘: a=14; break; case ‘F‘: case ‘f‘: a=15; break; case ‘9‘: a=9; break; case ‘8‘: a=8; break; case ‘7‘: a=7; break; case ‘6‘: a=6; break; case ‘5‘: a=5; break; case ‘4‘: a=4; break; case ‘3‘: a=3; break; case ‘2‘: a=2; break; case ‘1‘: a=1; break; case ‘0‘: a=0; break; default: a=0; printf("error input"); } return a; } void main() { char ch[100]; int len,i,sum=0,tmp; gets(ch); len=strlen(ch); for(i=2;i<len;i++) { tmp=change(ch[i]); sum=sum*16+tmp; } printf("%d",sum); }
11.字符串分隔
•连续输入字符串,请按长度为8拆分每个字符串后输出到新的字符串数组;
•长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
#include<stdio.h> process(char ch[],int len) { int j; int loop,cnt=0; j=len%8; for(loop=0;loop<len;loop++) { if(loop%8==0&&loop>0) { cnt=cnt+1; printf("\n"); } printf("%c",ch[loop]); } if(j>0) { for(loop=0;loop<8-j;loop++) { printf("0"); } printf("\n"); } } void main() { char ch1[100]; char ch2[100]; int len1,len2; int loop; gets(ch1); gets(ch2); len1=strlen(ch1); len2=strlen(ch2); process(ch1,len1); process(ch2,len2); }
12.明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
#include<stdio.h> void main() { int num,i,j,t=0; int min; int in[1000],tmp[1000],a[1000]; scanf("%d",&num); for(i=0;i<num;i++) { scanf("%d",&in[i]); } for(i=0;i<num-1;i++) { for(j=i+1;j<num;j++) { if(in[i]==in[j])break; } if(j==(num)) { tmp[t]=in[i]; t=t+1; } } tmp[t]=in[num-1]; t=t+1; for(i=0;i<t-1;i++) { for(j=i+1;j<t;j++) { if(tmp[i]>tmp[j]) { min=tmp[j]; tmp[j]=tmp[i]; tmp[i]=min; } } } for(i=0;i<t;i++) { printf("%d\n",tmp[i]); } }
13.计算字符个数
写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写
#include<stdio.h> void main() { char ch[100]; int i,len,num=0; char c; gets(ch); scanf("%c",&c); len=strlen(ch); for(i=0;i<len;i++) { if(ch[i]==c) { num=num+1; } else if(c>=‘a‘&&c<=‘z‘) { if(c-ch[i]==32) num++; } else if(c>=‘A‘&&c<=‘Z‘) { if(ch[i]-c==32) num++; } } printf("%d",num); }
14.求最小公倍数
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
#include<stdio.h> void main() { int a,b,i,begin; scanf("%d",&a); scanf("%d",&b); if(a>b)begin=a; else begin=b; for(i=begin;i%a!=0||i%b!=0;i++); printf("%d",i); }
15.求解立方根
•计算一个数字的立方根,不使用库函数
16.字符逆序
将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 如:输入“I am a student”,输出“tneduts a ma I”。
上面有了
17.记负均正
从输入任意个整型数,统计其中的负数个数并求所有非负数的平均值(*任意个输入,注意方法!*)
#include<stdio.h>
void main()
{
int a;
int i=0,num=0,cnt=0,sum=0;
while(scanf("%d",&a)!=EOF)
{
if(a>=0)
{
sum=sum+a;
num=num+1;
}
else cnt++;
i++;
}
printf("%d\n",cnt);
if(sum==0)
printf("0.0");
else
printf("%d",sum/num);
}
18.字符串分割
连续输入字符串(输出次数为N,字符串长度小于100),请按长度为8拆分每个字符串后输出到新的字符串数组,
长度不是8整数倍的字符串请在后面补数字0,空字符串不处理。
上面有了
19.字符统计(*ASICC 码表的顺序要记住*)
如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。
实现以下接口:
输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
清空目前的统计结果,重新统计
调用者会保证:
输入的字符串以‘\0’结尾。
20.输入整型数组和排序标识,对其元素按照升序或降序进行排序
输入整型数组和排序标识,对其元素按照升序或降序进行排序(*未完成*)
#include<stdio.h> void deseed(char ch[]) { int i,j,len,tmp; len=strlen(ch); for(i=0;i<len-1;i++) { for(j=i+1;j<len;j++) { if(ch[i]>ch[j]) { tmp=ch[j]; ch[j]=ch[i]; ch[i]=tmp; } } } for(i=0;i<len-1;i++) { printf("a=%d ",ch[i]); } printf("b=%d",ch[len-1]); } void reseed(char ch[]) { int i,j,len,tmp; len=strlen(ch); for(i=0;i<len-1;i++) { for(j=i+1;j<len;j++) { if(ch[i]<ch[j]) { tmp=ch[j]; ch[j]=ch[i]; ch[i]=tmp; } } } for(i=0;i<len-1;i++) { printf("c=%d ",ch[i]); } printf("d=%d",ch[len-1]); } void main() { char ch[100]; int flag,num,loop; scanf("%d",&num); for(loop=0;loop<num;loop++) { scanf("%c",&ch[loop]); printf("ch[loop]=%c",ch[loop]); } scanf("%d",&flag); if(flag=0) deseed(ch); else reseed(ch); }
原文:http://www.cnblogs.com/rednodel/p/4370942.html