C语言入门练习
杨亚仑
这个作者很懒,什么都没留下…
展开
-
4名学生5科成绩,有三个问题需解决(非常漂亮一题)
#include<stdio.h>void fun1(float (*p)[5]){ int i,j; float sum=0,ave; for(i=0;i<4;i++) sum+=*(*(p+i)+0); ave=sum/4; printf("The average of studene Court1 is:%.1f\n",ave);}void fun2(...原创 2015-08-21 01:16:25 · 708 阅读 · 0 评论 -
指向字符串常量的指针变量
#include<stdio.h>int main(){ char a[]="good luck"; printf("%s",a);//这里的a与下面的p一样,都表示字符串的搜地址 return 0;}/*#include<stdio.h>int main(){ char *p="good luck"; printf("%s",p);系统先输出p所原创 2015-08-11 18:06:22 · 991 阅读 · 0 评论 -
指向二维数组的元素
#include<stdio.h> //用指向二维数组元素的指针实现int main(){ int a[3][4]={{1,2,3,4},{5,6,7,8,},{0,1,2,3}}; int *p; p=a[0]; for(p=a[0];p<a[0]+12;p++)//a[0]与*a,&a[0]a[0]等价 { if((p-a[0])%4==0) ...原创 2015-08-11 16:45:31 · 531 阅读 · 0 评论 -
有三个参数的函数,一个为字符,两个为整数,第二个整数代表行数,第一个整数代表每行的字符的个数
#include<stdio.h>void f(char ch,int m,int n){ int i,j; for(i=0;i<n;i++) { for(j=0;j<m;j++) printf("%c",ch); printf("\n"); } }int main(){ char ch; int m,n; scanf("%c%d%d...原创 2015-08-10 20:18:26 · 2339 阅读 · 0 评论 -
在一个字符串中找空格的个数,字母的个数,数字的个数,和其他字符的个数
#include<stdio.h>int main(){ char b[100]; gets(b); int i,j,k=0,t=0,m=0,n=0; for(i=0;b[i]!='\0';i++) { if(b[i]>='0'&&b[i]<='9') k++; else if((b[i]>='A'&&b[...原创 2015-08-10 16:49:11 · 748 阅读 · 0 评论 -
写一个函数,实现字符串的复制
#include<stdio.h>void f(char c[50],char d[50]);int main(){ char a[50],b[50]; gets(a); gets(b); f(a,b); puts(a); return 0;}void f(char c[50],char d[50]){ int i; for(i=0;d[i]!='\...原创 2015-08-10 16:20:29 · 3775 阅读 · 0 评论 -
一个字符串有两个A,计算里面的字符个数,并打印出来
//法1:#include<stdio.h>int main(){ char x[100]; int i,a,c; while(gets(x)) { for(i=0;x[i]!='\0';i++)//找第一个A的位置,并用a记录下来 if(x[i]=='A') { a=i; break; } for(i=0;x[i]!='\0';...原创 2015-08-10 11:51:43 · 769 阅读 · 0 评论 -
数组中找最大元素,并标记所在位置。(要体会标记)
#include<stdio.h>#define m 5int f(float b[100]);int main(){ int i,n,j; float a[100]; printf("input numble of data:"); scanf("%d",&n); printf("input %d numbles:",n); fo...原创 2015-08-08 17:56:21 · 1788 阅读 · 2 评论 -
求n!
法一()递归用法:#include<stdio.h>int f(int k);int main(){ int n,s; while(scanf("%d",&n)!=EOF) { s=f(n); printf("%d\n",s); } return 0;}int f(int k){ int m; if(k==0||k==1) return...原创 2015-08-08 16:07:18 · 331 阅读 · 0 评论 -
50以内整除3切含有数字5的整数
#include<stdio.h>int f(int c[50]){ int i,j=0,a,b; for(i=1;i<=50;i++) { a=i/10; b=i%10; if((i%3==0&&a==5)||(i%3==0&&b==5)) { c[j]=i; j++; } } return j;...原创 2015-08-08 12:03:42 · 519 阅读 · 0 评论 -
判断是否是素数
#include<stdio.h>int f(int m);int main(){ int n; while(scanf("%d",&n)!=EOF) { if(f(n)) printf("Yes\n"); else printf("No\n"); }}int f(int m){ int i=2; while(i<=m&&..原创 2015-08-08 10:04:57 · 239 阅读 · 0 评论 -
从小到大的数中找指定的数,并标记出它的下坐标
#include<stdio.h>#define m 5int f(int a[100],int n);int main(){ int a[100],n,i,j; for(i=0;i<m;i++) scanf("%d",&a[i]); scanf("%d",&n); j=f(a,n); if(j>=0) printf("n=%d,i...原创 2015-08-07 20:53:20 · 265 阅读 · 0 评论 -
一串字符去掉c和d
#include<stdio.h>void f(char b[100]);int main(){ char a[100];//若想使用a[],必须为a[]='abcdef' gets(a); f(a); puts(a); return 0;}void f(char b[100]){ int i,j=0; for(i=0;b[i]!='\0';i++) if...原创 2015-08-07 19:08:10 · 324 阅读 · 0 评论 -
静态局部变量与自动变量的区别
#include<stdio.h>void f1();void f2();int main(){ int i; for(i=0;i<5;i++) f1(); f2(); return 0;}void f1(){ static int j=0;//能在每次调用后保留其值,并在下次调用中继续使用,所以输出为累加结果 j++; printf("j=%d"...原创 2015-08-07 11:41:36 · 700 阅读 · 0 评论 -
求二维数组每列中最大元素,并依次放入一位数组中
#include<stdio.h>#define m 3#define n 4void f(int b[n],int c[m][n]);int main(){ int i,j,c[m][n],b[n]; for(i=0;i<m;i++) for(j=0;j<n;j++) scanf("%d",&c[i][j]); f(b,c); for(i...原创 2015-08-06 18:16:53 · 5600 阅读 · 0 评论 -
选择排序法(从大到小)
#include<stdio.h>void f(int b[5]);int main(){ int i,n; int a[100]; printf("input numble of data:") ; scanf("%d",&n); printf("input %d numbles:",n); for(i=0;i<n;i++)...原创 2015-08-06 17:16:47 · 4480 阅读 · 0 评论 -
比较两个字符串的大小(两种方法,重点在介绍数组元素可以作为函数的实参)
#include<stdio.h>int compchar(char a,char b);int main(){ char str1[100],str2[100]; int flag,i; gets(str1); gets(str2); i=0; do { flag=compchar(str1[i],str2[i]);//根本不需要那个子函数,只需换成flag...原创 2015-08-06 11:10:45 · 938 阅读 · 0 评论 -
一串整数倒置
#include<stdio.h>#include<string.h>#define n 4int main(){ int i,a[100],b[100]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) b[i]=a[n-i-1]; for(i=0;i<n;i++)...原创 2015-08-05 18:05:09 · 375 阅读 · 0 评论 -
指针变量做参数
#include<stdio.h>void swap(int a,int b){ int m; m=b; b=a; a=m; //可把下面printf放在这达到效果}int main(){ int a,b; scanf("%d,%d",&a,&b); if(a<b) swap(a,b); printf("%...原创 2015-08-11 21:08:11 · 281 阅读 · 0 评论 -
比较两个字符串的大小(指针法)
#include<stdio.h>int f(char *m,char *n){ for(;*m!='\0';m++,n++) if(*m!=*n) break; return *m-*n;}int main(){ char a[100],b[100]; char *p1,*p2; int i; gets(a); gets(b); p1=a; p2=b...原创 2015-08-12 15:29:09 · 7799 阅读 · 1 评论 -
三个学生,每人修四科,计算所有学生成绩的平均分,并输出某个学生的成绩
#include<stdio.h>#define m 3#define n 4void f(float b[m][n]){ int i,j; float sum=0,ave; for(i=0;i<m;i++) for(j=0;j<n;j++) sum+=b[i][j]; ave=sum/(m*n); printf("%5.2f",ave)...原创 2015-08-12 18:07:57 · 1950 阅读 · 0 评论 -
m×m的二维数组中,最大元素放在中心,四个角放最小的元素
#include<stdio.h>#define m 5void swap(int *x,int *y)//调用swap时必须用这种指针型,否则会出现形参无法传给实参这种问题{ int t; t=*x; *x=*y; *y=t;}void fun(int a[m][m]){ int b[100]; int i,j,t,k=0; for(i=0;i<m;...原创 2015-08-20 17:40:18 · 546 阅读 · 0 评论 -
在多个字符串中找一个指定的字符串是否存在
#include<stdio.h>#include<string.h>int mseek(char *p){ char *s[4]={"good","boy","girl","well"}; int i,flag=0; for(i=0;i<4;i++) { if(strcmp(s[i],p)==0) flag=1;原创 2015-08-19 18:46:11 · 515 阅读 · 0 评论 -
n个数,从m个数开始,前后两部分颠倒(指针法)
法1#include<stdio.h>#define s 11void fun(int a[s],int m){ int *p,*f,*h; p=a; f=p+s-m; for(h=f;h<p+s;h++) printf("%d ",*h); for(;p<f;p++) printf("%d ",*p);}int main(){ print...原创 2015-08-19 17:59:14 · 469 阅读 · 0 评论 -
在输入的字符串中判断是否有a,多种方法(比较前两种不同的表示方法)
法1#include<stdio.h>int main(){ char a[100],*p; int flag=0; gets(a); for(p=&a[0];*p!='\0';p++) if(*p=='a') { printf("yes"); break; } if(*p=='\0') printf("no"); return 0;}...原创 2015-08-18 18:29:25 · 1905 阅读 · 0 评论 -
简单的一维数组输出(利用指针)
#include<stdio.h>int main(){ int i,*p,a[5]; p=&a[0];//p=a for(i=0;i<5;i++) scanf("%d",p++); p=a;//不不能少,否则下满的p将会指向a[4]之后的单元 for(i=0;i<5;i++) printf("a[%d]=%d ",i,*p++); retu...原创 2015-08-18 17:00:55 · 2628 阅读 · 0 评论 -
用下标法和指针法分别输出数组中的全部元素
#include<stdio.h>int main(){ int a[10],i,*p; for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("%d ",a[i]); printf("\n"); for(i=0;i<10;i++) printf("%d &quo原创 2015-08-18 16:33:24 · 3896 阅读 · 0 评论 -
两个数种输出最大最小值
法1#include<stdio.h>int main(){ int *p1,*p2,*p,a,b; p1=&a; p2=&b; scanf("%d%d",&a,&b); if(a<b) { p=p1; p1=p2; p2=p; } printf("max=%d,main=%d",*p1,*...原创 2015-08-18 15:35:41 · 875 阅读 · 0 评论 -
指针变量的定义和引用(最简单的)
#include<stdio.h>int main(){ int a,b,c; int *p; a=5; b=a+3; p=&a; c=*p+3; printf("%d,%d\n",a,b); printf("%d,%d\n",*p,c); return 0;}原创 2015-08-18 15:12:32 · 734 阅读 · 0 评论 -
例:输入abcdabfg 输入ab 输出abfg
#include<stdio.h>char *fun(char *a,char *b){ char *t,*r,*s; s="NULL"; while(*a!='\0') { t=a; r=b; while(r!='\0') if(*t==*r) { t++; r++; } else break; if(*r=='\0')...原创 2015-08-17 18:29:38 · 605 阅读 · 0 评论 -
从第m个数开始复制字符串
指针法#include<stdio.h>#include<string.h>void copystr(char *a,char *b,int m){ a=a+m-1; while(*a!='\0') { *b=*a; b++; a++; } *b='\0';}int main(){ char a[100],b[100]; int ...原创 2015-08-17 11:27:14 · 440 阅读 · 0 评论 -
指针数组的输出区别
#include<stdio.h>int main(){ char *a[]={"abcd","ef","gh","ijk"}; int i; for(i=0;i<4;i++) printf("%c",*a[i]); return 0;}输出结果为aegi若换成printf("%s",a[i]);则输出结果为abcd原创 2015-08-17 09:18:45 · 739 阅读 · 0 评论 -
字符串连接(strcat)的函数
#include<stdio.h>void f(char a[],char b[]){ int num=0,n=0; while(a[num]!='\0') num++; while(b[n]) { a[num]=b[n]; num++; n++; } a[num]='\0';//可用for(int i=0;i<num;i++) printf("%...原创 2015-08-14 21:22:44 · 560 阅读 · 0 评论 -
有关指针的一道题
#include<stdio.h>int main(){ char b[]="ABCD"; char *p; for(p=b;*p;p+=2) printf("%s",p); return 0;}//printf("%s",chp);会打印从chp开始直到遇到'\0'结束符for(chp=b; *chp; chp+=2) printf("%s",chp);第一次ch...原创 2015-08-14 20:40:03 · 514 阅读 · 0 评论 -
字符串的排序(多种方法)
//选择法#include<stdio.h>#include<string.h>int main(){ char *name[]={"zhang","wang","li","zhao","wu"}; char *p; int i,j,k; for(i=0;i<4;i++) { k=i; for(j=i+1;j&a原创 2015-08-14 19:22:02 · 1499 阅读 · 0 评论 -
字符的排序(冒泡排序,选择排序)
#include<stdio.h>#include<string.h>int main(){ int i,j,t,n,k; char a[100]; printf("input the numble of data:"); scanf("%d",&n); getchar(); ...原创 2015-08-14 11:28:14 · 592 阅读 · 0 评论 -
求两数的和,差,积(指针函数作为形参)
#include<stdio.h>int f(int a,int b){ int c; c=a+b; return c;}int g(int a,int b){ int c; c=a*b; return c;}int h(int a,int b){ int c; c=a-b; return c;}int main(){ int x,y,z,j...原创 2015-08-13 17:46:45 · 6697 阅读 · 0 评论 -
求两个数的最大值(用函数指针变量调用函数)
#include<stdio.h>int max(int a,int b){ if(a>b) return a; else return b;}int main(){ int x,y,z; scanf("%d%d",&x,&y); z=max(x,y); printf("%d",z); return 0;}...原创 2015-08-13 16:57:28 · 2389 阅读 · 0 评论 -
倒输一个整数(递归调用)
#include<stdio.h>void f(int a);int main(){ int m; scanf("%d",&m); if(m<0) { m=-m; putchar('-');//putchar为输出一个字符函数,注意是单引号 } f(m); return 0;}void f(int a){ if(a>=0&...原创 2015-08-05 17:35:39 · 461 阅读 · 0 评论 -
函数的递归调用
int age(int n){ int c; if(n==1) c=10; else c=age(n-1)+2;//要学会这种递归思想 return c;}#include<stdio.h>int main(){ printf("%d",age(5)); return 0;}原创 2015-08-05 16:37:23 · 256 阅读 · 0 评论