当前位置:首页 » 编程语言 » c语言编写程序

c语言编写程序

发布时间: 2022-01-31 02:06:10

‘壹’ c语言编写一个程序

#include "stdio.h"

#define N 3

void Input(int p[][N]){

int i,j;

for(i=0;i<N;i++)

for(j=0;j<N;scanf("%d",p[i]+j++));

}

void Mrx_pro(int a[][N],int b[][N],int c[][N]){

int i,j,k;

for(k=0;k<N;k++)

for(i=0;i<N;i++)

for(c[k][i]=j=0;j<N;c[k][i]+=a[k][j++]*b[j][i]);

}

void Outmrx(int p[][N]){

int i,j;

for(i=0;i<N;i++){

for(j=0;j<N;printf("%6d",p[i][j++]));

printf(" ");

}

}

int main(int argc,char *argv[]){

int A[N][N]={1,2,3,4,5,6,7,8,9},B[N][N]={10,20,30,40,50,60,70,80,90},C[N][N];

Outmrx(A);

printf("x ");

Outmrx(B);

printf("= ");

Mrx_pro(A,B,C);

Outmrx(C);

printf(" ================== Please input matrix A... ");

Input(A);

printf("Please input matrix B... ");

Input(B);

printf(" ------------------ ");

Outmrx(A);

printf("x ");

Outmrx(B);

printf("= ");

Mrx_pro(A,B,C);

Outmrx(C);

return 0;

}

代码格式和运行样例图片:

‘贰’ 用c语言编写一个程序

应该多给几个例子,n=10的时候如何处理?得到10,110,210,1210等等?
若是这样的,试试下面程序:
/*
用c语言编写一个程序:对于一个自然数n(n<=50),统计具有下列数字的个数,
并输出所有符合条件的数字:自然数n,在n的左边加上一个自然数,
但该自然数不能超过原数的一半;继续按此规则进行处理,直到不能加自然数为止。
例如当n=6时,符合条件条件的是:6,16,26,36,126,136共6个;
当n=5时,符合条件的是:5,15,25,125.(0也是自然数,所以要加上本身)。。。
*/
#include
<stdio.h>
#include
<stdlib.h>
int
g_count=0;
void
fun(int
n,int
d,int
b)
{
int
i;
printf("%8d
",d);
g_count++;
if(g_count%8==0)
printf("\n");
for(i=1;i<=n/2;i++)
{
fun(i,i*b+d,b*10);
}
}
void
result(int
n)
{
int
t=n,d=n,b=10;
printf("result:\n");
g_count=0;
while(t>=10)
{
t/=10;
b*=10;
}
fun(n,d,b);
printf("\ntotal
%d
numbers\n\n",g_count);
}
int
main()
{
int
n;
printf("input
n(n<=50):\n");
while(scanf("%d",&n)!=EOF)
{
if(n>=0&&n<=50)
result(n);
printf("input
n(n<=50):\n");
}
return
0;
}
我这,若是放开n的限制,n=200的时候,计算花掉20多秒吧,总共205658个。
n=300的话,算了几分钟都没结束。估计也得使用long
long数据类型了。使用递归不是最快的,重复计算多。
网络推荐也不求真相?有误导了吧。
对于楼主新补充的提升,我的程序是这样做的,满足你的要求。

‘叁’ 用C语言编写计算机程序

我对你提出的问题的题意的理解是编一个计算器程序。。。。。。。。。如果要是那样子的话我给出代码: #include int main() { char cp; int a, b; scanf("%d %c %d", &a, &cp, &b); if (cp == '-')printf("%d", a - b); else if(cp == '+')printf("%d", a + b); else if (cp == '*')printf("%d", a * b); else if (cp == '%')printf("%d", a % b); return 0; } 如果要知道这几个符号在机器中的实现机理的话: +和-不说了*就相当于多做几遍加法。而%是用位运算之类的方法进行运算的所以%的效率最低不知道是不是你的编译器有问题我的程序运行起来是得15的你是否正确输入了????

‘肆’ 用C语言编写程序

程序就是读取文件到数组,再将数组进行排序,最后写入文件。

读写文件流程:fopen获取文件流(根据读写需求,选择参数,使用完必须调用fclose函数关闭),fscanf读取文件内容,fseek控制文件流指针,fprintf写入文件。

选择排序:每个循环周期选出一个最值,交换一次。

下面是代码(数组为动态数组):

#include <stdio.h>

#include <malloc.h>

int maxLen;//数组长度

int *read2Nums(char path[]);//读取

int write2File(int *nums,char path[]);//写入

void showNums(int *nums);

int px(int *nums,int flag);//选择排序flag=1升序,flag=0降序

int main()

{

int *nums=NULL;

char rPath[]="c:\000.dat",wPath[]="c:\rank.dat";

if(!(nums=read2Nums(rPath))) return 1;

showNums(nums);

printf("数组升序排列: ");

if(px(nums,1)==-1) return 1;

showNums(nums);

printf("数组降序排列: ");

if(px(nums,0)==-1) return 1;

showNums(nums);

printf("写入到文件路径%s下(存在覆盖,不存在新建) ",wPath);

if(write2File(nums,wPath)==-1) return 1;

printf("写入成功! ");

return 0;

}

void showNums(int *nums)

{

int i;

if(nums) for(i=0,printf("文件内容: ");i<maxLen;printf("%d ",nums[i]),i++);

printf(" ");

}

int px(int *nums,int flag)

{

int i,j,n,temp;

if(!nums) return -1;

for(i=0;i<maxLen-1;i++)

{

n=i;

for(j=i+1;j<maxLen;j++)

{

if(flag && nums[n]>nums[j]) n=j;

if(!flag && nums[n]<nums[j]) n=j;

}

temp=nums[i],nums[i]=nums[n],nums[n]=temp;

}

return 1;

}

int write2File(int *nums,char path[])

{

int i;

FILE *fp=NULL;

if(!nums) return -1;

if(!(fp=fopen(path,"w"))) return -1;

//fseek(fp,SEEK_END);

for(i=0;i<maxLen;i++)

fprintf(fp,"%d ",nums[i]);

fclose(fp);

return 1;

}

int *read2Nums(char path[])

{

int *nums=NULL,*temp=NULL,cnt=0;

FILE *fp=NULL;

maxLen=10;

if(!(fp=fopen(path,"r"))) return NULL;

nums=(int *)malloc(sizeof(int)*maxLen);

if(!nums) return NULL;

while(fscanf(fp,"%d",&nums[cnt++])!=-1)

if(cnt==maxLen)//数组长度不够扩展(每次扩展10长度)

{

maxLen=maxLen+10;

temp=(int *)realloc(nums,sizeof(int)*maxLen);

if(temp) return NULL;

nums=temp;

}

if(--cnt<maxLen)//函数结束前,删除多余地址,减少内存占用

{

maxLen=cnt;

temp=(int *)realloc(nums,sizeof(int)*maxLen);

if(!temp) return NULL;

nums=temp;

}

fclose(fp);

return nums;

}

‘伍’ C语言编写程序

程序功能:录入N个字符串(动态内存申请,内存范围内不限长度个和字符个数)

输入一个字符串,查找是否有相同,有输出1,没有输出0。(先比较长度再比较内容)

字符串可以包含空格,代码我都详细备注了。

#include<stdio.h>
#include<malloc.h>
#include<conio.h>
#include<string.h>
typedefstructstrList
{
char*s;//一行字符串首地址
intclo;//列数
structstrList*next;//链表指针
}STRL;
STRL*inputStr(STRL*strlHead,STRL*strlTail,intff);
voidprSTRL(STRL*strlHead);
intfindSTRL(STRL*strlHead);
voidmeError(void*p);
intmain()
{
STRL*strlHead=(STRL*)malloc(sizeof(STRL)),*strlTail=NULL;
meError(strlHead);
strlHead->next=NULL;
strlTail=inputStr(strlHead,strlTail,0);
printf("录入的字符串信息为: ");
prSTRL(strlHead);
while(1)
printf("查找结果:%d ",findSTRL(strlHead));
return0;
}
voidprSTRL(STRL*strlHead)//打印链表字符串
{
while(strlHead->next!=NULL)
{
printf("%s ",strlHead->next->s);
strlHead=strlHead->next;
}
printf(" ");
}
intfindSTRL(STRL*strlHead)//查找字符串,先比较长度,再比较内容,找到返回1,未找到返回0
{
intflag=0;
STRLsFindHead,*sFindTail=NULL;
sFindHead.s=NULL;
sFindHead.next=NULL;
sFindTail=inputStr(&sFindHead,sFindTail,1);
if(!sFindTail)
return0;
while(strlHead->next!=NULL)
{
if(strlHead->next->clo==sFindTail->clo&&!strcmp(strlHead->next->s,sFindTail->s))
{
flag=1;
break;
}
strlHead=strlHead->next;
}
free(sFindTail->s);
free(sFindTail);
returnflag;
}

STRL*inputStr(STRL*strlHead,STRL*strlTail,intff)
//ff!=1录入多行任意长度字符串,连续回车结束录入,返回尾节点
//ff==1录入单行任意长度字符串,返回尾节点
{
char*str=NULL,*temp=NULL,c;
intlen,add,cnt,flag=1;//len:字符串预设长度(包含结束符号);add:长度增长值,cnt:实际录入的字符个数;flag=0结束录入
STRL*strlNew=NULL;
if(ff!=1)
printf("输入多行字符串(每输入一行回车确认,不输入直接回车结束录入): ");
else
printf("输入要查找的字符串: ");
while(flag)//换行
{
cnt=0;
len=10;
add=10;
str=(char*)malloc(sizeof(char)*len);
meError(str);
while(1)//输入一行
{
temp=NULL;
c=getch();
if(c==' '&&cnt>0)
{
strlNew=(STRL*)malloc(sizeof(STRL));
meError(strlNew);
strlNew->s=str;
strlNew->clo=cnt;
strlNew->next=NULL;
if(ff==1)//单行录入模式
flag=0;
//保存录入并在多行模式下开始录入新的一行
if(!strlHead->next)
strlHead->next=strlNew;
else
strlTail->next=strlNew;
strlTail=strlNew;
printf(" ");
break;
}
if(c==' '&&cnt==0)//结束录入
{
if(ff==1)
returnNULL;
flag=0;
free(str);
break;
}
if(c!=' '&&cnt>=len-1)//一行字符串内存已满,扩充内存
{
len+=add;
temp=(char*)realloc(str,sizeof(char)*len);
meError(temp);
str=temp;
}
str[cnt++]=c;
str[cnt]=0;
printf("%c",c);
}

}
returnstrlTail;
}
voidmeError(void*p)//内存申请失败
{
if(p==NULL)
{
printf("异常:内存申请失败!回车结束程序! ");
while(getch()!=' ');
exit(0);
}
}

‘陆’ C语言程序编写

C语言使用 Xcode。Xcode 是由Apple官方开发的IDE,支持C、C++、Objective-C、Swift等

‘柒’ 如何编写C语言程序

准备材料

windows电脑、VC++(DEV_C++)

1.打开桌面上的DEV_C++,进入如下界面:

‘捌’ C语言编程程序

#include <stdio.h>

void main()

{

int year,month,day,s=0,a,i;

int m[11] = {31,28,31,30,31,30,31,31,30,31,30,31};//建立一维数组,放入每个月的天数

printf("Please input year-month-day : ");

scanf("%d-%d-%d",&year,&month,&day);//输入年月日

if(month > 2 && ((year % 400 == 0) || (year % 4 == 0 && year % 100 != 0)))//判断闰年且月份大于2

a=1;//如果闰年且月份大于2,在天数上加1

else

a=0;//不是则不加

for(i = 0 ; i < month - 1 ; i ++)

s = s + m[i];//把输入月份之前的每个月天数相加;比如输入4月,则此时s=31+28+31

printf("That is the %d(th) day of %d. ",s+day+a,year);//所求值为s+day+a


‘玖’ 用C语言编写程序

这个问题好简单的啊。记MARK下,晚上有空了给你简单写写吧。
=======================
楼下的真快啊,两位写得都不错,不过最大的问题是都没有做输入验证。我简单写了下,和各位分享一下。
=======================
代码在g++编译器下验证通过,如果在VC++环境下“fflush(stdin)”这个命令不能清空输入缓存,需用“while(getchar()!='\n')”这段代码代替。
=======================
先展示下结果:
请输入第1个学生的姓名:tt

请输入第1个学生的学号:001

请输入第1个学生的英文成绩:abc

请重新输入第1个学生的英文成绩(0-100):99

请输入第1个学生的数学成绩:abc

请重新输入第1个学生的数学成绩(0-100):90

请输入第1个学生的C语言成绩:ee

请重新输入第1个学生的C语言成绩(0-100):70

请输入第1个学生的体育成绩:60

请输入第2个学生的姓名:gg

请输入第2个学生的学号:002

请输入第2个学生的英文成绩:99

请输入第2个学生的数学成绩:88

请输入第2个学生的C语言成绩:77

请输入第2个学生的体育成绩:66

请输入第3个学生的姓名:hh

请输入第3个学生的学号:003

请输入第3个学生的英文成绩:55

请输入第3个学生的数学成绩:66

请输入第3个学生的C语言成绩:77

请输入第3个学生的体育成绩:88

name sno English Math Cgrade PEgrade avg
tt 001 99 90 70 60 79.750000
gg 002 99 88 77 66 82.500000
hh 003 55 66 77 88 71.500000

=======================================
结果文件:
name sno English Math Cgrade PEgrade avg
tt 001 99 90 70 60 79.750000
gg 002 99 88 77 66 82.500000
hh 003 55 66 77 88 71.500000
========================================
源代码:
#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 3

typedef struct student
{
char name[20];
char sno[20];
int English;
int Math;
int Cgrade;
int PEgrade;

}student;
int main()
{
FILE *fp = NULL;
student stu[MAXSIZE];
float avg[MAXSIZE];
int i;
//enter the students info
for(i=0;i<MAXSIZE;i++)
{
printf("\n请输入第%d个学生的姓名:",i+1);
scanf("%s",stu[i].name);
fflush(stdin);
printf("\n请输入第%d个学生的学号:",i+1);
scanf("%s",stu[i].sno);
fflush(stdin);
printf("\n请输入第%d个学生的英文成绩:",i+1);
while(1)
{
scanf("%d",&stu[i].English);
if( stu[i].English <= 100 && stu[i].English >=0 )
break;
printf("\n请重新输入第%d个学生的英文成绩(0-100):",i+1);
fflush(stdin);
}
printf("\n请输入第%d个学生的数学成绩:",i+1);
while(1)
{
scanf("%d",&stu[i].Math);
if( stu[i].Math <= 100 && stu[i].Math >=0 )
break;
printf("\n请重新输入第%d个学生的数学成绩(0-100):",i+1);
fflush(stdin);
}
printf("\n请输入第%d个学生的C语言成绩:",i+1);
while(1)
{
scanf("%d",&stu[i].Cgrade);
if( stu[i].Cgrade <= 100 && stu[i].Cgrade >=0 )
break;
printf("\n请重新输入第%d个学生的C语言成绩(0-100):",i+1);
fflush(stdin);
}
printf("\n请输入第%d个学生的体育成绩:",i+1);
while(1)
{
scanf("%d",&stu[i].PEgrade);
if( stu[i].PEgrade <= 100 && stu[i].PEgrade >=0 )
break;
printf("\n请重新输入第%d个学生的体育成绩(0-100):",i+1);
fflush(stdin);
}
}

for(i=0;i<MAXSIZE;i++)
{
avg[i] = (stu[i].English + stu[i].Math + stu[i].Cgrade + stu[i].PEgrade ) / 4.0;
}

fp=fopen("a.txt","w");

fprintf(fp, "name\tsno\tEnglish\tMath\tCgrade\tPEgrade\tavg\n");
printf( "name\tsno\tEnglish\tMath\tCgrade\tPEgrade\tavg\n");

for( i = 0; i < MAXSIZE; i++ )
{
fprintf(fp, "%s\t%s\t%d\t%d\t%d\t%d\t%f\n", stu[i].name, stu[i].sno, stu[i].English, stu[i].Math, stu[i].Cgrade, stu[i].PEgrade, avg[i]);
printf("%s\t%s\t%d\t%d\t%d\t%d\t%f\n", stu[i].name, stu[i].sno, stu[i].English, stu[i].Math, stu[i].Cgrade, stu[i].PEgrade, avg[i]);
}
fclose(fp);
return 0;
}
===============================================

热点内容
如何打开加密ppt 发布:2025-01-05 11:52:01 浏览:599
神奇摄影app无法存储照片 发布:2025-01-05 11:37:42 浏览:900
电销机器人系统源码 发布:2025-01-05 11:37:41 浏览:723
招投标系统源码 发布:2025-01-05 11:36:57 浏览:413
php翻转字符串 发布:2025-01-05 11:30:20 浏览:336
公开密钥加密系统 发布:2025-01-05 11:25:35 浏览:58
安装mysqlpython 发布:2025-01-05 11:17:02 浏览:744
tar备份linux 发布:2025-01-05 11:13:37 浏览:727
大型pppoe服务器搭建 发布:2025-01-05 11:12:59 浏览:843
怎么修改360wifi密码 发布:2025-01-05 11:12:51 浏览:63