文章目录
总结一下之前学过的小程序,之后会用到
判断素数
int sum,m,n,i,count,flag;
count=0;
sum=0;
scanf("%d%d",&m,&n);
while(m<=n)
{
flag=0;
for(i=2;i<=m;i++)
{
if(m%i==0)
flag=1;
break;
}
if(flag==0)
{
count++;
sum=sum+m;
}
m++;
}
printf("%d %d",count,sum);
找到字符串中的十六进制数字并转换成十进制
int i,i1,j,j1,sum;
char a[MAXN],b[MAXN],n;
i=0;
sum=0;
j=0;
while((n=getchar())!='#'){
a[i]=(char)n;
i++;
}
a[i]='\0';
i1=i;
for(i=0;i<i1;i++){
if(a[i]=='-'){
b[0]='-';
i=i+1;
break;
}
else if(a[i]>='0'&&a[i]<='9'||a[i]>='a'&&a[i]<='f'||a[i]>='A'&&a[i]<='F'){
b[0]='+';
break;
}
}
j=1;
for(;i<=i1;i++){
if((a[i]>='0'&&a[i]<='9')||(a[i]>='a'&&a[i]<='f')||(a[i]>='A'&&a[i]<='F')){
b[j]=a[i];
j++;
}
}
j1=j-1;
j=0;
if(b[0]=='-'){
putchar(b[j]);
}
for(j=0;j<=j1;j++){
if(b[j]>='0'&&b[j]<='9')
sum=sum*16+(b[j]-'0');
else if(b[j]>='a'&&b[j]<='f')
sum=sum*16+10+(b[j]-'a');
else if(b[j]>='A'&&b[j]<='F')
sum=sum*16+10+(b[j]-'A');
}
printf("%d\n",sum);
return 0;
}
找鞍点
int i,i1,j,c,c1,andian,flag;
int a[5][5];
flag=0;
for(i=0;i<4;i++){
for(c=0;c<4;c++){
scanf("%d",&a[i][c]);
}
}
for(i=0;i<4;i++){
andian=a[i][0];
for(c=0;c<4;c++){
if(andian<=a[i][c]){
andian=a[i][c];
i1=i;
c1=c;
}
}
for(j=0;j<4;j++){
if(andian<=a[j][c1]){
flag++;
}
}
if(flag==4){
printf("[%d][%d] %d",i1,c1,andian);
break;
}
flag=0;
}
if(flag==0)
printf("NO");
return 0;
找出不是两个数组共有的元素
int a[10],b[10];
int i,j,n,m,flag;
flag=0;
scanf("%d",&n); //数组1
printf("\n");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("\n");
scanf("%d",&m); //数组2
printf("\n");
for(j=0;j<m;j++){
flag=0;
scanf("%d",&b[j]);
}
for(i=0;i<n;i++){
flag=0;
for(j=0;j<m;j++){
if(b[j]==a[i])
flag=1;
}
if(flag==0)
printf("*%d",a[i]);
}
for(j=0;j<m;j++){
flag=0;
for(i=0;i<n;i++){
if(b[j]==a[i])
flag=1;
}
if(flag==0)
printf("*%d",b[j]);
}
printf("*");
return 0;
选择排序法
int a[10]={'\0'};
int n,i,j,j1,t;
printf("Enter n:");
scanf("%d",&n);
printf("Enter %d integers:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=0;i<n-1;i++){
t=a[i];
for(j=i+1;a[j]!='\0';j++){
if(a[j]>t){
t=a[j];
j1=j;
a[j1]=a[i];
a[i]=t;
}
}
}
for(i=0;a[i]!='\0';i++)
printf("%d ",a[i]);
return 0;
打印杨辉三角
int i,j,n,k;
int a[10][10];
printf("Enter n: ");
scanf("%d",&n);
for(i=0;i<n;i++){
a[i][0]=a[i][i]=1;
for(j=1;j<i;j++){
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
for(i=0;i<n;i++){
for(k=0;k<n-i;k++)
printf(" ");
for(j=0;j<=i;j++){
printf("%5d",a[i][j]);
}
printf("\n");
}
return 0;
字符分类
int n,i;
char a[100];
i=0;
while((a[i]=getchar())!='\n')
i++;
a[i]='\0';
num(a,i);
return 0;
}
void num(char a[100],int i){
int a1,b,c,d;
a1=0;
b=0;
c=0;
d=0;
int j;
for(j=0;j<i;j++){
if((a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z')){
a1++;
}
else if(a[j]==' '){
b++;
}
else if(a[j]>='1'&&a[j]<='9'){
c++;
}
else{
d++;
}
}
printf("letter=%d,blank=%d,digit=%d,other=%d",a1,b,c,d);
水仙花数
int m,n,t,sxhs;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
if(m>n){
m=t;
m=n;
n=t;
}
for(;m<=n;m++){
sxhs=sxh(m);
if(sxhs!=0){
printf("%d\n",sxhs);
}
}
return 0;
}
int sxh(int m)
{
int sxhs=0;
int a,b,c;
a=m/100;
b=m/10%10;
c=m%10;
if(m==a*a*a+b*b*b+c*c*c)
sxhs=m;
return sxhs;
完数
int m,n,t,y;
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
if(m>n){
m=t;
m=n;
n=t;
}
for(;m<=n;m++){
if(m==1)
printf("%5d",m);
y=wanshu(m);
if(y!=0)
printf("%5d",y);
}
return 0;
斐波那契
#define MAXN 50
int fib(int a[MAXN],int m,int n);
int main()
{
int m,n,i,j;
int a[MAXN];
printf("Input m: ");
scanf("%d",&m);
printf("Input n: ");
scanf("%d",&n);
a[0]=1;
a[1]=1;
for(i=2;i<20;i++){
a[i]=a[i-1]+a[i-2];
}
for(;m<=n;m++){
j=fib(a,m,n);
if(j!=0)
printf("%d ",j);
}
return 0;
}
int fib(int a[MAXN],int m,int n){
int i;
for(i=0;a[i]<=n;i++){
if(a[i]==m)
return a[i];
哥德巴赫猜想
int prime(int m);
int main()
{
int m,i,j,z,flag,k;
int a,b;
a=6;
b=100;
k=0;
for(i=a;i<=b;i++){
if(k==5){
k=0;
printf("\n");
}
if(i%2==0){
for(j=2;j<i;j++){
flag=prime(j);
if(flag==1){
flag=0;
z=i-j;
flag=prime(z);
if(flag==1){
printf("%4d=%2d+%2d",i,j,z);
k++;
break;
}
}
}
}
}
}
int prime(int m){
int i;
int flag;
flag=1;
for(i=2;i<sqrt(m)+1;i++){
if(m%i==0){
flag=0;
return 0;
}
}
if(flag==1)
return flag;
}
a+aa+aaa
#include<stdio.h>
int aaa(int a,int n);
int main(){
int a,n,sum;
printf("Input a, n: ");
scanf("%d %d",&a,&n);
sum=aaa(a,n);
printf("s=%d",sum);
}
int aaa(int a,int n){
int i,m,s;
s=0;
m=0;
for(i=1;i<=n;i++){
m=m*10+a;
s=s+m;
}
return s;
}
字符串删除
#include<stdio.h>
#include<string.h>
int main()
{
char a[20],str[200];//a为要查找的字符,b为替换后的
gets(a),gets(str);
int num1 = strlen(a);//统计字符串的长度
int num2 = strlen(str);
int i, j, flag=1;
for (i = 0; i < num2; i++)
{
if ((str[i] != a[0])&&(str[i] != a[0]+32)&&(str[i] !=a[0]-32))//字符串的大小写无关查找
printf("%c", str[i]);//若不是,按照原来的输出
else{
flag=1;
for (j = 0; j < num1; j++)//对比a与str中的一段是否完全相同
{
if ((str[i+j] != a[j])&&(str[i+j] != a[j]+32)&&(str[i+j] != a[j]-32))
{
flag = 0;
break;
}
}
if (flag)//如果相同,则输出b,完成替换
{
i = i + num1;
i--;
}
else//如果不相同,按照原来的输出
printf("%c", str[i]);
}
}
return 0;
}
指针,交换顺序
#include<stdio.h>
void f(char *p){
int i,j,k=0;
char t;
while(*(p+k)!='\0')
k++;
for(i=0;i<k;i++){
for(j=0;j<k-i-1;j++){
t=*(p+j);
*(p+j)=*(p+j+1);
*(p+j+1)=t;
}
}
}
int main(){
char st[20];
scanf("%s",st);
f(st);
printf("%s",st);
}
找最长字符串
#include <stdio.h>
#include <string.h>
int main()
{
char s[5][100];
int i;
char *sp;
for (i=0; i<5; i++) {
scanf("%s",&s[i][100]);
}
sp=&s[0][100];
for (i=1; i<5; i++) {
if (strlen(&s[i][100])>strlen(sp)) {
sp=&s[i][100];
}
}
printf("%s",sp);
}
时分秒
#include<stdio.h>
struct time{
int h;
int m;
int s;
};
int main(){
int n;
struct time front,after;
scanf("%d:%d:%d",&front.h,&front.m,&front.s);
scanf("%d",&n);
after.s=front.s+n;
while(after.s>=60){
after.s=after.s-60;
front.m++;
}
while(front.m>=60){
front.m=front.m-60;
front.h++;
}
if(front.h>=24)
front.h=front.h-24;
after.m=front.m;
after.h=front.h;
printf("%d:%d:%d",after.h,after.m,after.s);
return 0;
}
文件,字符输入
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *fp;
char ch[20]={'\0'};
int i=0;
if((fp=fopen("f3.txt","w"))==NULL){
printf("File open error!\n");
exit(0);
}
while(1){
scanf("%c",&ch[i]);
if(ch[i]=='\n')
break;
i++;
}
fputs(ch,fp);
if(fclose(fp)){
printf("can not close the file!\n");
exit(0);
}
return 0;
}
打印爱心~~~
#include<stdio.h>
int main()
{
printf(" **** ****\n");//打印第一行
printf(" ********* *********\n");//打印第二行
printf(" ************* *************\n");//打印第三行
int i,j;//定义变量
for(i=0;i<3;i++)//打印4-6行,一共3行,因此i小于3
{
for(j=0;j<29;j++)//限制每行输出*的个数
{
printf("*");//这三行只打印*号,无空格输出
}
printf("\n");//打印完一行需要进行换行
}
for(i=0;i<7;i++) //打印7-13行,一共7行,因此i小于7
{
for(j=0;j<2*(i+1)-1;j++)//这个for循环和下面的for是并列的
{
printf(" ");//打印空格
}
for(j=0;j<27-i*4;j++)//读者可以带入几个数找出条件
{
printf("*");//打印*
}
printf("\n");
}
for(i=0;i<14;i++)//打印最后一行的*
{
printf(" ");//打印空格
}
printf("*\n") ;//打印*
return 0;
}
#感谢收看。😃
这些都是大一老师布置的题目,有的太简单就没放上来。
现在开始学java了,朋友问我c的题目,发现不同老师教的写法都不一样。
就写了这个文章。希望能帮助到更多听不太懂老师讲解的学生拿去作参考。