c语言编写一个程序,非常简单 c语言如何编写一个简单的多线程程序?

作者&投稿:离韦 (若有异议请与网页底部的电邮联系)

(1)

#include "stdio.h"
#include "math.h"
int main(int argc,char *argv[]){
float m,r;
int n;
printf("Please input, the number of the principal and interest rates in turn.
");
if(scanf("%f,%d,%f",&m,&n,&r)!=3 || m<0 || n<0 || r<0){
printf("Input error, exit...
");
return 0;
}
printf("Interest: %.0f
",m*(pow(1+r,n)-1)*.8);
return 0;
}

运行样例:

(2)

#include "stdio.h"
int main(int argc,char *argv[]){
float h,r;
printf("Please enter r & h(R:) in turn.
");
if(scanf("%f,%f",&r,&h)!=2 || r<0 || h<0){
printf("Input error, exit...
");
return 0;
}
printf("The volume is: %.2f
",3.14/3*h*r*r);
return 0;
}

运行样例:



第一题:
#include "stdio.h"
#include "math.h"
main()
{
float b,r,x;
int y;
scanf("%f,%d,%f",&b,&y,&r);
x=b*(pow(1+r,y)-1)*(1-0.2)
printf("利息:%.0f\n",x);
}
第二题:
main()
{
int i;
float r,h,v;
for(i=0;i<2;i++)
{
scanf("%f,%f",&r,&h);
v=3.14*r*r*h/3;
printf("体积为:%.2f\n",v);
}

用c语言编写一个简易的抽奖程序,~

用data.txt文件保存以下内容:

13725528132 李桂荣
13725528131 李二来
13725528133 张荣刚
13725528130 荣南
13725528137 王三
13725528138 吴立
13725528139 郭德纲
13725528140 周星驰
13725528141 张曼玉
13725528142 张艺谋
13725528152 秦香莲
13725528162 潘金莲
13725528172 李大嘴
13725528182 展堂

//源代码如下
#include
#include
#include

#define MAX_NUM 9999

//定义保存人名和电话的数据结构
struct Person
{
char name[20];
char telno[15];
char award;
};

int num = 0; //统计人数
FILE *fp; //文件指针
Person persons[MAX_NUM]; //定义数组

int awarder_1[1] = {-1}; //一等奖
int awarder_2[2] = {-1, -1}; //二等奖
int awarder_3[5] = {-1, -1, -1, -1, -1};//三等奖

//读取文件
void readdata()
{
int i = 0; //数组下标
Person person;
//文件打开
fp = fopen("data.txt", "r");
if (fp == NULL)
{
printf("打开文件data.txt失败!
");
return;
}
//当文件不为空
while (!feof(fp))
{
num ++;
fscanf(fp, "%s", person.telno);
fscanf(fp, "%s", person.name);
person.award = 'F';
persons[i++] = person;
}
}

//初始化标识
void init()
{
for(int i = 0; i < num; i++)
{
persons[i].award = 'F';
}
}

//显示单个中奖信息
void info( int i)
{
printf("手机号码: %s 姓名: %s
", persons[i].telno, persons[i].name);
}

void main()
{
char again = 'Y';
//读取文件
readdata();

printf("简单抽奖程序
");
srand((long)time(0));

while(again == 'Y' || again == 'y')
{
//初始化标识
init();

printf("
开始抽第一等奖(1名),按任意键开始...
");
getchar();
awarder_1[0] = abs(rand() % num);
while (persons[awarder_1[0]].award == 'T')
{
awarder_1[0] = rand() % num;
}
persons[awarder_1[0]].award = 'T';

info(awarder_1[0]);

printf("
开始抽第二等奖(2名)
");
for (int i = 0; i < 2; i++)
{
printf("
第%d个二等奖,按任意键开始...
", i+1);
getchar();
awarder_2[i] = rand() % num;
while (persons[awarder_2[i]].award == 'T')
{
awarder_2[i] = rand() % num;
}
persons[awarder_2[i]].award = 'T';
info(awarder_2[i]);
}

printf("

开始抽第三等奖(5名)
");
for (i = 0; i < 5; i++)
{
printf("
第%d个三等奖,按任意键开始...
", i + 1);
getchar();

awarder_3[i] = rand() % num;
while (persons[awarder_3[i]].award == 'T')
{
awarder_3[i] = rand() % num;
}
persons[awarder_3[i]].award = 'T';
info(awarder_3[i]);
}

printf("
是否重新开始抽奖?(Y or N)...
");
again = getchar();
}

getchar();
return;
}

这是一个多线程例子,里面只有两个线程,是生产者/消费者模式,已编译通过,注释很详细,
如下:

/* 以生产者和消费者模型问题来阐述Linux线程的控制和通信你
生产者线程将生产的产品送入缓冲区,消费者线程则从中取出产品。
缓冲区有N个,是一个环形的缓冲池。
*/
#include
#include

#define BUFFER_SIZE 16

struct prodcons
{
int buffer[BUFFER_SIZE];/*实际存放数据的数组*/
pthread_mutex_t lock;/*互斥体lock,用于对缓冲区的互斥操作*/
int readpos,writepos; /*读写指针*/
pthread_cond_t notempty;/*缓冲区非空的条件变量*/
pthread_cond_t notfull;/*缓冲区未满 的条件变量*/
};

/*初始化缓冲区*/
void pthread_init( struct prodcons *p)
{
pthread_mutex_init(&p->lock,NULL);
pthread_cond_init(&p->notempty,NULL);
pthread_cond_init(&p->notfull,NULL);
p->readpos = 0;
p->writepos = 0;
}

/*将产品放入缓冲区,这里是存入一个整数*/
void put(struct prodcons *p,int data)
{
pthread_mutex_lock(&p->lock);
/*等待缓冲区未满*/
if((p->writepos +1)%BUFFER_SIZE ==p->readpos)
{
pthread_cond_wait(&p->notfull,&p->lock);
}
p->buffer[p->writepos] =data;
p->writepos++;
if(p->writepos >= BUFFER_SIZE)
p->writepos = 0;
pthread_cond_signal(&p->notempty);
pthread_mutex_unlock(&p->lock);
}
/*从缓冲区取出整数*/
int get(struct prodcons *p)
{
int data;
pthread_mutex_lock(&p->lock);
/*等待缓冲区非空*/
if(p->writepos == p->readpos)
{
pthread_cond_wait(&p->notempty ,&p->lock);//非空就设置条件变量notempty
}
/*读书据,移动读指针*/
data = p->buffer[p->readpos];
p->readpos++;
if(p->readpos == BUFFER_SIZE)
p->readpos = 0;
/*设置缓冲区未满的条件变量*/
pthread_cond_signal(&p->notfull);
pthread_mutex_unlock(&p->lock);
return data;
}
/*测试:生产站线程将1 到1000的整数送入缓冲区,消费者线程从缓冲区中获取整数,两者都打印信息*/
#define OVER (-1)
struct prodcons buffer;
void *producer(void *data)
{
int n;
for( n=0;n<1000;n++)
{
printf("%d ------>
",n);
put(&buffer,n);
}
put(&buffer,OVER);
return NULL;
}
void *consumer(void *data)
{
int d;
while(1)
{
d = get(&buffer);
if(d == OVER)
break;
else
printf("----->%d
",d);
}
return NULL;
}
int main()
{
pthread_t th_p,th_c;
void *retval;
pthread_init(&buffer);
pthread_create(&th_p,NULL,producer,0);
pthread_create(&th_c,NULL,consumer,0);
/*等待两个线程结束*/
pthread_join(th_p, &retval);
pthread_join(th_c,&retval);
return 0;
}

使用switch语句,编写一个简单的计算机程序。要求从键盘上输入两个数...
答:如果我的回答你还满意记得选个满意答案哦#include<stdio.h> void main(){ float a,b;char c;printf("请输入两个操作数:");scanf("%f",&a);scanf("%f",&b);getchar();printf("请选择操作运算:");scanf("%c",&c);switch(c){ case '+':printf("结果是:%f\n",a+b);break;case...

用switch语句编程设计一个简单的计算器程序
答:include <stdio.h> int main( ){ double a, b;char op;scanf("%lf%c%lf", &a, &op, &b);switch (op){ case '+':printf("%lf + %lf = %lf\n", a, b, a + b);break;case '-':printf("%lf - %lf = %lf\n", a, b, a - b);break;case '*':printf("%...

用C语言怎么编写一个从1加到10的程序...新手求解
答:include <stdio.h> void main(){ int n;int sum=0; //初始sum变量值为0;for(n=1;n<=10;n++){ sum=sum+n; //从一加到10;} printf("1+2+...+10=%d",sum);}

用C语言编写一个计算最大值的程序
答:C程序代码如下:解析:1、首先定义a,b,c,max四个整型变量,并输入a,b,c三个数;2、定义最大值为a,if循环体还是对b和c进行循环;3、根据循环体判断最大的值,最后输出结果。

用C语言编写一个简单的程序?
答:c语言是函数语言,所以画图也离不开各种图形函数:下面举几个简单的例子:=== 1./*学用circle画圆形*/ include "graphics.h"main(){int driver,mode,i;float j=1,k=1;driver=VGA;mode=VGAHI;initgraph(&driver,&mode,"");setbkcolor(YELLOW);for(i=0;i<=25;i++){ setcolor(8);circle...

超简单的C语言程序题 输出一个正三角形
答:2、接着定义变量并确定行数,这里用3个for循环,外层的for循环用来遍历行数,里面的第一个for循环确定空格数量,另一个for循环确定每一行星号数量并换行,图像的输出也是在for循环中完成的:3

c语言如何编写一个新年快乐的程序?
答:(1)简洁的语言 C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简...

C语言编写一个程序,实现如下功能:从键盘输入一个三位数,求各位数字之...
答:include "stdio.h"void main(){ int n,sum=0;printf("请输入一个三位数:");scanf("%d",&n);sum=n/100+n%100/10+n%10;//百位数+十位数+个位数 printf("这个三位数各位数字之和是%d\n",sum);} 结果:

C语言程序,请你编写一个程序计算每个学生的平均成绩
答:include<stdio.h> void main(){ float a[10][10];//用来存放10名学生的5门成绩,最后一位用于存放平均成绩 int i,j;float sum=0.0;for(i=0;i<10;i++){ printf("请输入第%d个学生的5门成绩",i+1);for(j=0;j<5;j++){ scanf("%f",&a[j]);sum=sum+a[j];} a[10]=sum/...

一个简单的C语言程序,可以正常运行的。
答:include<stdio.h> int main(){ int a,i,j,sum=0;double eavg;int b[5],temp;printf("请输入5个正整数\n");for(i=0;i<5;i++){ scanf("%d",&b[i]);sum+=b[i];} for(j=0;j<4;j++)for(i=0;i<4-j;i++)if(b[i]...