C語(yǔ)言必背的一些經(jīng)典程序代碼實(shí)例
1、水仙花數(shù)
題目:打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)
本身。例如:153是一個(gè)“水仙花數(shù)”,因?yàn)?53=1的三次方+5的三次方+3的三次方。
方法一:
#include <stdio.h>
int main(int argc, const char *argv[])
{
for(int i=1;i<10;i++){
for (int j=0;j<10;j++){
for (int k=0;k<10;k++){
if(i*i*i+j*j*j+k*k*k==i*100+j*10+k)
printf("%d\n",i*100+j*10+k);
}
}
}
return 0;
}
方法二:
#include <stdio.h>
int main()
{
int i,j,k,n;
printf("'water flower'number is:");
for(n=100;n<1000;n++)
{
i=n/100;/*分解出百位*/
j=n/10%10;/*分解出十位*/
k=n%10;/*分解出個(gè)位*/
if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)
{
printf("%-5d",n);
}
}
printf("\n");
}
2、整型數(shù)組內(nèi)函數(shù)求和。
使用函數(shù)封裝,實(shí)現(xiàn)一個(gè)整型數(shù)組內(nèi)數(shù)據(jù)的求和。
#include <stdio.h>
int array_sum(int *data,int n);
int main(int argc, const char *argv[])
{
int a[]={1,2,3,4,5,6,7,8};
int sum=0;
sum=array_sum(a,sizeof(a)/sizeof(int));
printf("sum=%d\n",sum);
return 0;
}
int array_sum(int *data,int n){
int ret=0;
int i;
for(i=0;i<n;i++){
ret+=data[i];
}3、斐波那契數(shù)列
斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列,因數(shù)學(xué)家萊昂納多·斐波那契(Leonardo Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、……
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[15];
arr[0]=1;
arr[1]=1;
for(int i=2;i<15;i++)
{
arr[i]=arr[i-2]+arr[i-1];
}
for(int i=0;i<15;i++){
printf("%d、",arr[i]);
}
printf("\n");
return 0;
}
4、楊輝三角
楊輝三角的每行行首與每行結(jié)尾的數(shù)都為1.而且,每個(gè)數(shù)等于其左上及其正上二數(shù)的和。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[15][15]={{0}};
int i,j;
for(i=0;i<15;i++)
{
a[i][0]=1;
for(j=1;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
for(i=0;i<15;i++){
for(j=0;j<=i;j++)
printf("%8d",a[i][j]);
printf("\n");
}
return 0;
}5、猴子吃桃子
一只小猴子一天摘了許多桃子,第一天吃了一半,然后忍不住多吃了一個(gè)。第二天又吃了一半,再加上一個(gè);后面每天都是這樣吃.到第10天的時(shí)候,小猴子發(fā)現(xiàn)只有一個(gè)桃子了。
問(wèn)小猴子第一天共摘了多少個(gè)桃子?
用遞歸函數(shù)求得小猴子第一天共摘了多少個(gè)桃子。
#include <stdio.h>
int tao(int n);
int main(int argc, const char *argv[])
{
printf("%d\n",tao(10));
return 0;
}
int tao(int n){
if(n==1){
return 1;
}
return (tao(n-1)+1)*2;
}6、編寫一個(gè)時(shí)鐘
#include <unistd.h>
int main(int argc, const char *argv[])
{
int year,month,day, hour,min,sec;
scanf("%d %d %d %d %d %d",&year,&month,&day,&hour,&min,&sec);
while(1){
sleep(1);
if(sec<59){
sec++;}
else if(min<59){
min++;
sec=00;}
else if(hour<23){
hour++;
min=0;
sec=0;
}else if((month==1||month==3||month==5||month==7||month==8||month==10||month==12)&&day<31){
day++;
hour=00;
min=00;
sec=00;
}
else if(month==02&&day<28){
day++;
hour=00;
min=00;
sec=00;
}
else if((month==4||month==6||month==9||month==11)&&day<30){
day++;
hour=00;
min=00;
sec=00;
}
else if(month<12){
month++;
day=01;
hour=00;
min=00;
sec=00;
}else {
year++;
month=01;
day=01;
hour=00;
min=00;
sec=00;
}
printf("%02d:%02d:%02d:%02d:%02d:%02d\r",year,month,day,hour,min,sec);
fflush(stdout);
}
return 0;
}
7、字符串中計(jì)算某字符出現(xiàn)的次數(shù)
寫一個(gè)函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是個(gè)字符,第二個(gè)參數(shù)是個(gè)char *,
函數(shù)功能為返回這個(gè)字符串中該字符的個(gè)數(shù)。
#include <stdio.h>
int func(char a,char *b);
int main(int argc, const char *argv[])
{
char c;
char s[30]={0};
printf("Please input char:\n");
scanf("%c",&c);
getchar();
printf("Please input string:\n");
gets(s);
func(c,s);
return 0;
}
int func(char a,char *b){
int i=0;
while(*b){
if(a==*b){
i++;
}
*b++;
}
printf("%d\n",i);
}8、逆序輸出
一、逆序輸出字符串
#include <stdio.h>
int main(int argc, const char *argv[])
{
int arr[10];
for(int i=0;i<10;i++){
scanf("%d",&arr[i]);
}
printf("逆序輸出為");
int n, i;
n=sizeof(arr)/sizeof(int);
for(i=n-1;i>=0;i--)
printf("%d\t",arr[i]);
putchar('\n');
return 0;
}
二、逆序輸出數(shù)組中的數(shù)據(jù)
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[]={1,2,3,4,5,6};
int *p,*q,n,i,temp;
n=sizeof(a)/sizeof(int);
p=a;
q=&a[n-1];
while(p<q){
temp=*p;
*p=*q;
*q=temp;
p++;
q--;
}
for (i=0;i<n;i++){
printf("%d\n",a[i]);
}
return 0;
}
9、字符串中刪除重復(fù)字符
#include <stdio.h>
#include<string.h>
int main(int argc, const char *argv[])
{
char s[100];
printf("input:");
gets(s);
int n=strlen(s);
for(int i=0;i<n;i++){
int k=i+1;
for(int j=i+1;j<n;j++){
if (s[j]!=s[i])
s[k++]=s[j];
}
s[k]='\0';
}
puts(s);
return 0;
}
10、用函數(shù)封裝實(shí)現(xiàn)字符串拼接
#include <stdio.h>
char *strcat(char *a,char *b);
int main(int argc, const char *argv[])
{
char a[50]="hello";
char b[]="word";
puts(strcat(a,b));
return 0;
}
char *strcat(char *a,char *b){
char *c=a;
while(*a){
a++;
}
while(*b){
*a=*b;
a++;
b++;
}
*a='\0';
return c;
}11、刪除字符串中的空格
#include <stdio.h>
#include <string.h>
void del_space(char *s1);
int main(int argc, const char *argv[])
{
char s[]="a d gg sd ";
puts(s);
del_space(s);
puts(s);
return 0;
}
void del_space(char *s1)
{
char *s2;
s2=s1;
while(*s1){
if(*s1==' ')
{
s1++;
}else{
*s2=*s1;
s1++;
s2++;
}
}
*s2='\0';
}
12、求字符串中數(shù)字字符個(gè)數(shù)及把數(shù)字字符轉(zhuǎn)換成數(shù)字求和。
#include <stdio.h>
int main(int argc, const char *argv[]){
char s[100];
int i=0;
int j=0;
int sum=0;
gets(s);
//puts(s);
while(s[i]!='\0'){
if('0'<=s[i]&&s[i]<='9'){
j++;
sum+=(s[i]-'0');
}
i++;
}
printf("字符串中數(shù)字字符的個(gè)數(shù)為:%d\n",j);
printf("字符串中數(shù)字字符求和為:%d\n",sum);
return 0;
}13、二維數(shù)組中求出最大值及最大值所在的行數(shù)和列數(shù)。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int i,j,row,cloumn;
row=cloumn=0;
for(i=0;i<3;i++){
for (j=0;j<3; j++){
if(a[row][cloumn]<a[i][j]){
row=i;
cloumn=j;
}
}
}
printf("max=%d 最大值所在行為%d行 %d列\(zhòng)n",a[row][cloumn],row,cloumn);
return 0;
}14、冒泡排序
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,temp;
int arr[5]={0};
printf("input:");
for(i=0;i<5;i++){
scanf("%d",&arr[i]);
}
for(i=0;i<4;i++){
for (j=0;j<4-i;j++){
if(arr[j]>arr[j+1]){
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
printf("排序后為:");
for(i=0;i<5;i++){
printf("%d ",arr[i]);
}
putchar(10);
return 0;
}
15、實(shí)現(xiàn)兩個(gè)數(shù)的交換(函數(shù)封裝)
#include <stdio.h>
void swap(int *x, int *y);
int main(int argc, const char *argv[])
{
int a;
int b;
scanf("%d",&a);
scanf("%d",&b);
swap(&a,&b);
printf("%d\n",a);
printf("%d\n",b);
return 0;
}
void swap(int *x, int *y){
int temp;
temp=*x;
*x=*y;
*y=temp;
}16、簡(jiǎn)易超市結(jié)賬系統(tǒng)
#include <stdio.h>
int main(int argc, const char *argv[])
{ int n;
double m;
printf("***********************************************\n");
printf("歡迎你來(lái)給我送錢,請(qǐng)按以下步驟進(jìn)行送錢程序\n");
printf("1、是尊貴會(huì)員請(qǐng)輸入1以及消費(fèi)金額\n");
printf("2、不是尊貴會(huì)員請(qǐng)輸入2以及消費(fèi)金額\n");
printf("***********************************************\n");
scanf("%d %lf",&n,&m);
if(n=1){
if(m<100){
printf("money is %lf\n",m*0.99);
}else if(m<200){
printf("money is %lf\n",m*0.95);
}else if(m<300){
printf("money is %lf\n",m*0.92);
}else if(m<500){
printf("money is %lf\n",m*0.88);
}else{
printf("money is %lf\n",m*0.8);
}
}else{
if(m<100){
printf("money is %lf\n",m);
}else if(m<200){
printf("money is %lf\n",m*0.98);
}else if(m<300){
printf("money is %lf\n",m*0.95);
}else if(m<500){
printf("money is %lf\n",m*0.9);
}else{
printf("money is %lf\n",m*0.88);
}
}
return 0;
}
17、完數(shù)
一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為“完數(shù)”。例如6=1+2+3.編程
找出1000以內(nèi)的所有完數(shù)。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int i,j,sum;
for (i=3;i<=1000;i++){
sum=1;
for (j=2;j<i;j++){
if((i%j)==0)
sum+=j;
}
if(sum==i)
printf("%d\n",i);
}
return 0;
}
18、簡(jiǎn)單選擇排序
#include <stdio.h>
#define N 5
int main(int argc, const char *argv[])
{
int i,j,k,temp;
int num[N];
printf("input num:",N);
for(i=0;i<N;i++){
scanf("%d",&num[i]);
}
for (i=0;i<N-1;i++){
k=i;
for(j=i+1;j<N;j++){
if (num[j]<num[k]){
k=j;
}
}
if(k!=i){
temp=num[i];
num[i]=num[k];
num[k]=temp;
}
}
printf("output:\n");
for(i=0;i<N;i++){
printf("%d",num[i]);
}
putchar(10);
return 0;
}
19、用函數(shù)封裝思想實(shí)現(xiàn)strncpy
#include <stdio.h>
int main(int argc, const char *argv[])
{printf("please input two string and n:\n");
char a[100];
gets(a);
char b[100];
gets(b);
int n;
scanf("%d",&n);
char *p=a;
char *q=b;
int i=0;
while(*q&&i<n){
*p=*q;
i++;
p++;
q++;
}
printf("strncpy:\n");
puts(a);
return 0;
}
20、實(shí)現(xiàn)strcmp的功能
#include <stdio.h>
int main(int argc, const char *argv[])
{
printf("please input two string :\n");
char a[100];
gets(a);
char b[100];
gets(b);
char *p=a;
char *q=b;
while (*p&&*q){
if(*p<*q){
printf("-1\n");
return 0;
}else if(*p>*q){
printf("1\n");
return 0;
}else{
p++;
q++;
if((*p=='\0')&&(*q=='\0')){
printf("0\n");
return 0;
}
}
}
if(*p){
printf("1");
}else{
printf("-1");
}
return 0;
}
21、用函數(shù)封裝實(shí)現(xiàn)strcat的功能
方式一(最后添加'\0'):
#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
int main(int argc, const char *argv[])
{
char a[100];
char b[100];
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
return 0;
}
void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;
}
*x='\0';
}
方式二(初始化數(shù)組'\0'):
#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
int main(int argc, const char *argv[])
{
char a[100]={0};
char b[100]={0};
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
return 0;
}
void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;
}
//*x='\0';
}
方式二(定義全局變量'\0'):
#include <stdio.h>
#include<string.h>
void mystrcat(char *x,char *y);
char a[100];
char b[100];
int main(int argc, const char *argv[])
{
gets(a);
gets(b);
mystrcat(a,b);
puts(a);
return 0;
}
void mystrcat(char *x,char *y){
x=x+strlen(x);
while(*y){
*x=*y;
x++;
y++;
}
//*x='\0';
}22、用sqrt 實(shí)現(xiàn)求三角形面積
#include <stdio.h> //編譯時(shí)加-lm
#include <math.h>
int main(int argc, const char *argv[])
{
double area;
double a,b,c,s,n;
printf("請(qǐng)輸入三角形的三邊長(zhǎng)\n");
scanf("%lf",&a);
scanf("%lf",&b);
scanf("%lf",&c);
if((a+b)>c&&(a+c)>b&&(b+c)>a){
s=1.0/2*(a+b+c);
area=sqrt(s*(s-a)*b*c);
printf("%lf",area);
putchar('\n');
} else{
printf("erro");
putchar('\n');
}
return 0;
}23、輸入整數(shù)轉(zhuǎn)換為字符串
#include <stdio.h>
char *zhuan(char *p,int n);
int main(int argc, const char *argv[])
{char s[50],*r;
int n;
printf("請(qǐng)輸入要轉(zhuǎn)換為字符串的整數(shù)\n");
scanf("%d",&n);
r=zhuan(s,n);
puts(r);
puts(s);
return 0;
}
char *zhuan(char *p,int n){
int r,i=0,j;
while(n){
r=n%10;
n=n/10;
p[i]=r+'0';
i++;
}
p[i]='\0';
j=i-1;
i=0;
while(i<j){
r=p[i];
p[i]=p[j];
p[j]=r;
i++;
j--;
}
return p;
}
24、簡(jiǎn)易實(shí)現(xiàn)手機(jī)商城功能
#include <stdio.h>
typedef struct
{
int ID;
char Brand[10];
char Model[20];
char CPU[20];
float Price;
}PH;
void ui();
void input(PH ph[],int a);
void output(PH ph[],int a);
void selec(PH *p);
int num;
int main(int argc, const char *argv[])
{
while(1){
sleep(1);
ui();
int s;
PH ph[10];
PH *p=ph;
printf("please selec:\n");
scanf("%d",&s);
switch(s)
{
case 1: input(ph,s);break;
case 2: output(ph,s);break;
case 3: return 0;
case 4:selec(p);break;
default:
puts("xia hu shu");
}
while(getchar()!='\n');
}
return 0;
}
void input(PH ph[],int a){
int n=0;
printf("please input iphone num:\n");
scanf("%d",&n);
printf("ID\tBrand\tModel\tCPU\tPrice\n");
for(int i=num;i<num+n;i++){
scanf("%d %s %s %s %f",&ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,&ph[i].Price);
}
puts("input success");
num=num+n;
}
void output(PH ph[],int a){
printf("ID\tBrand\tModel\tCPU\tPrice\n");
for(int i=0;i<num;i++){
printf("%d\t%s\t %s\t %s\t %f\n",ph[i].ID,ph[i].Brand,ph[i].Model,ph[i].CPU,ph[i].Price);
}
}
void ui(){
puts("*************************************");
puts("****iphone management systerm********");
puts("*************1、input****************");
puts("*************2、output***************");
puts("*************3、exit*****************");
puts("*************4、selec*****************");
puts("*************************************");
}
void selec(PH *p){
float min,max;
printf("please input max:\n");
scanf("%f",&max);
printf("please input min:\n");
scanf("%f",&min);
puts("the iphone in this rage have:i\n");
for (int i=0;i<num;i++){
if((p+i)->Price>=min&&(p+i)->Price<=max){
printf("%d\n",(p+i)->ID);
}else{
printf("sorry,no phone");
}
}
}
總結(jié)
到此這篇關(guān)于C語(yǔ)言必背的一些經(jīng)典程序代碼的文章就介紹到這了,更多相關(guān)C語(yǔ)言經(jīng)典程序代碼內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C++的靜態(tài)成員變量和靜態(tài)成員函數(shù)詳解
這篇文章主要為大家介紹了C++的靜態(tài)成員變量和靜態(tài)成員函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12
C語(yǔ)言實(shí)現(xiàn)制作通訊錄(新手推薦)
本文推薦給C語(yǔ)言學(xué)習(xí)到結(jié)構(gòu)體的新手們,供其練習(xí)。這篇文章主要是利用C語(yǔ)言制作一個(gè)簡(jiǎn)單的通訊錄功能,感興趣的小伙伴可以跟隨小編一起了解一下2022-09-09
C++深入分析講解函數(shù)與重載知識(shí)點(diǎn)
C++?允許多個(gè)函數(shù)擁有相同的名字,只要它們的參數(shù)列表不同就可以,這就是函數(shù)的重載(Function?Overloading),借助重載,一個(gè)函數(shù)名可以有多種用途2022-06-06
C++超詳細(xì)分析單鏈表的實(shí)現(xiàn)與常見(jiàn)接口
鏈表是一種物理存儲(chǔ)結(jié)構(gòu)上非連續(xù)、非順序的存儲(chǔ)結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過(guò)鏈表中的指針鏈接次序?qū)崿F(xiàn)的,本章帶你分析單鏈表的實(shí)現(xiàn)與常見(jiàn)接口2022-03-03
C語(yǔ)言實(shí)現(xiàn)的循環(huán)單鏈表功能示例
這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)的循環(huán)單鏈表功能,結(jié)合實(shí)例形式分析了基于C語(yǔ)言實(shí)現(xiàn)的循環(huán)單鏈表定義、創(chuàng)建、添加、刪除、打印、排序等相關(guān)操作技巧,需要的朋友可以參考下2018-04-04
C語(yǔ)言實(shí)現(xiàn)文件讀寫操作的幾種常用方法
C語(yǔ)言提供了一系列文件操作函數(shù),使得我們可以通過(guò)程序?qū)ξ募M(jìn)行讀寫操作,本文主要介紹了C語(yǔ)言實(shí)現(xiàn)文件讀寫操作的幾種常用方法,具有一定的參考價(jià)值,感興趣的可以了解一下2024-03-03

