C语言作业

发布 2023-05-19 03:43:28 阅读 6257

h1:计算通用产品**(upc)的校验位(选作)

许多年来,货物生产商都会把超市售卖的每件商品上放置一个条码。这种被称为通用产品**(universal product code,缩写upc)的条码可以识别生产商和产品。超市可以通过扫描产品上的条码来确定支付此项商品的费用。

每一个条码由十二位数字构成,通常这些数字会显示在条码下面。例如,包装为26盎司的morton牌碘化盐所用条码下的数字是:0 24600 01003 0

第一个数字表示商品的种类(0表示大部分的食品杂货,2表示需要称量的货品,3表示药品或和健康相关的商品,而5表示优惠券)。接下来的一组五位数字用来识别生产商。而第二组五位数字则用来区分产品类型(其中包括包装尺寸)。

最后一位数字是“校验位”,它可以帮助鉴别先前数字中的错误。如果条码扫描出现错误,那么前十一位数字和最后一位数字可能会不一致,而超市扫描机也会拒绝整个条码。

下面是一种计算校验位的方法:首先把第一位、第三位、第五位、第七位、第九位和第十一位数字相加。然后把第二位、第四位、第六位、第八位和第十位数字相加。

接着把第一次加法结果乘以3后再加上第二次加法的结果。随后,再把上述结果减去1。减法后的结果除以10取余数。

最后,用9减去上一步骤中得到的余数。现在以morton碘盐为例,第一组数字的加法是0+4+0+0+0+3=7,而第二组数字的加法是2+6+0+1+0=9。把第一组加法值乘以3后再加上第二组加法值得到的结果是30。

再减去1,结果变为29。再把这个值除以10取余数为9。9在减去余数结果9,最终值为0

输入。每次输入三行数据,第一行是upc的第一位数字,第二行是upc的第一组五位数字,第三行是upc的第二组五位数字。

输出。upc的校验位。

解法:#include<>

main()

int a,b,c,q,e,f,g,h,i,j,k,m,n,p,x,y,z;

scanf("%1d",&a);

scanf("%1d%1d%1d%1d%1d",&b,&c,&q,&e,&f);

scanf("%1d%1d%1d%1d%1d",&g,&h,&i,&j,&k);

x=a+c+e+g+i+k;

y=b+q+f+h+j;

m=x*3+y;

n=m-1;

z=n%10;

p=9-z;

printf("%d",p);

h2:数制转换(选作)

成绩: 5 / 折扣: 0.8

我们通常使用的都是十进制的数字,但其实在生活中也经常会使用其它进制。

这个题目会给你两个不同的数字,它们不属于同一进制,要求你计算出当它们分别处于何种进制之中时,两个数字相等。譬如 12 和 5 ,在十进制下它们是不等的,但若 12 使用 3 进制而 5 使用六进制或十进制时,它们的值就是相等的。因此只要选择合适的进制, 12 和 5 就可以是相等的。

程序的输入是两个数字 m 和 n( 其十进制的值不超过 1000000000) ,它们的进制在 2~36 之间。对于十以下的数字,用 0~9 表示,而十以上的数字,则使用大写的 a~z 表示。

求出分别在 2~36 哪种进制下 m 和 n 相等。若相等则输出相应的进制,若不等则输出错误信息。当然了,对于多种可能成立的情况,找出符合要求的进制最小的一组就行了。

信息的格式见测试用例。

#define n 50

#include""

#include""

main()

char a[n],b[n],d[n],e[n],d0[n];

int i,j,o,r,g,h,w,t,l,k,max1,max2;

double p[n],q[n]=,u[n],v[n]=,c[n],f[n],m,n;

for(i=0;i

gets(d);

if(d[0]!=x20')

k=strlen(d);

goto c;}

if(d[0]==x20')

strcpy(d0,d);

g=strlen(d0);

for(i=0;d0[i]==x20';i++)

j=i;for(i=0;ik=g-j;}

c:for(i=0;i

for(i=0;i

max1=c[0];

for(i=1;i

q[i]=q[i]+m;

for(i=max2+1;i<=36;i++)

for(j=0;j

v[i]=v[i]+n; }

for(g=max1+1;g<=36;g++)

for(h=max2+1;h<=36;h++)

} for(i=0;iprintf(" is not equal to ")

for(i=0;iprintf(" in any base 2..36");

goto outs;

out:for(i=0;i printf(" base %d) =w);

for(i=0;i printf(" base %d)",t);

outs:;

16. 空心字符菱形。

成绩: 5 / 折扣: 0.8

输入:菱型起始字母和菱形的高度。

输出:参看测试用例,打印空心的由字符组成的菱形。

#include<>

void main()

char letter;

int i,j,k,l,n;

scanf("%c %d",&letter,&n);

for(i=0;i{

if(i==0)

for(j=0;jelse if(i>0)

for(j=0;jprintf("%c",letter+i);

for(j=0;j<2*i-1;j++)printf("

printf("%c",letter+i);

printf("");

for(i=n-2;i>=0;i--)

if(i==0)

for(j=0;jelse if(i>0)

for(j=0;jprintf("%c",letter+i);

for(j=0;j<2*i-1;j++)printf("

printf("%c",letter+i);

printf("");

17. 数字菱形。

成绩: 5 / 折扣: 0.8

这是非信息类今年出的题目,大家来看看,你会做吗?

输入 n 的值,输出如下例( n=4 )所示的数字菱形。

输入: n

输出:数字菱形

友情提示:同学们总结一下打印星号组成的实心图形程序的编程思路:第一步,打印星号组成的正方形;第二步,改变每行星号的个数,打印每行星号数量不一样的图形;如果是空心图形,每行第一个和最后一个位置输出星号,其他位置输出空格。

现在我们练习输出变化的字符,在打印星号图形的基础上,原来输出*号的位置,将printf("*改为printf("%2d",x);当然,原来输出一个*号的地方只占一个字符的位置,现在都要改为2个字符的位置,如果输出的是数字且多于2个,则要是%3d或%4d了。

C语言作业

no.1 include int main 结果z 9.000000 配置 mingw2.95 cuirelease,编译器类型 mingw old检查文件依赖性。完成构建未命名1 0个错误,0个警告。生成c documents and settings administrator my docum...

C语言作业

上机实习报告。题目 有五名同学每名同学的数据包括学号 姓名和3门功课的成绩 成绩提前预设 求 1 每名同学的平均成绩 名同学每门课程的平均分 3 按学生的平均分从低到高次序排除每名同学的顺序 分析 根据题目要求,使用结构体类型,包括5个元素学号 num 姓名 name 门功课的成绩 score 3 ...

C语言作业

1 c语言的特点与主要应用领域。特点 1 c语言简洁,紧凑,使用方便,灵活 2 c语言具有高级语言和低级语言的特征 3 c语言是结构化语言,具有结构化的控制语句 4 c语言具有各种各样的数据类型 5 c语言具有强大的图形功能,支持多种显示器和驱动器 6 c语言适用范围大,目标 质量高,程序执行效率高...