导航:首页 > 编程语言 > 编程题

编程题

发布时间:2022-01-29 15:31:31

编程题(C语言)

#include "stdio.h"

double fun(double a[],int len)

{

double min=a[0];

int i;

for(i=1;i<len;i++)

if(a[i]<min)

min=a[i];

return min;

}

int main()

{

double a[10]={0};

int i;

printf("请输入10个数: ");

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

scanf("%lf",&a[i]);

printf("这10个数的最小值为:%lf ",fun(a,10));

}

❷ c语言编程题

《C语言程序设计试题汇编》由三部分组成:第一部分为试题集,每章都提供了大量试题,并给出了每道试题的答案及解析;第二部分为全国计算机等级考试指导,包括大纲规定的考试内容、重要知识点与分值预测,笔试应试指导与复习策略,2007年9月、2008年4月、2008年9月三套笔试真题试卷解析与笔试应试技巧,上机考试应试方法与技巧,上机题主要算法及实例,上机考试流程和操作方法;第三部分为综合模拟训练,提供了五套笔试模拟试卷以及答案与解析。
《C语言程序设计试题汇编》适合作为大专院校中各专业层次的学生学习C语言程序设计的辅导教材。通过对《C语言程序设计试题汇编》的学习,读者能够进一步复习、巩固和掌握C语言程序设计的知识,并适应和满足最新的等级考试要求,帮助广大考生顺利通过全国计算机等级二级C语言程序设计考试。
图书目录
第一部分 试题集
第1章 C语言概述
第2章 数据类型、运算符与表达式
第3章 最简单的C程序设计
第4章 逻辑运算和判断选择控制
第5章 循环结构
第6章 数组
第7章 函数
第8章 编译预处理
第9章 指针
第10章 结构体与共用体
第11章 位运算
第二部分 全国计算机等级考试指导
第三部分 综合模拟训练

❸ 计算机编程题

import java.util.Scanner;//导入Scanner,用于接收键盘输入

public class Text13 {//主类

public static void main(String[] args) {//主方法,程序入口

Scanner input=new Scanner(System.in);//构造Scanner对象

System.out.println("请输入一个数:");//提示用户输入

double b=input.nextDouble();//获取用户输入,保存到double类型的b中

double temp=Math.sqrt(b);//Math类调用sqrt()方法,获取b的平方根,保存到double类型的temp中

int a=(int)temp;//将double型的temp转化为int,使其丢失部分精度后保存到a中

if(a*a==b) {//当丢失精度的后的a如果相乘等于用户输入的数,那么证明输入的数有平方根

System.out.println(a);//输出该数

}else {

System.out.println("NO");//否则输出no

}
}

}

❹ java题目编程题

首先初始化一个HashMap,存入一些用户名和电话号码的初始值,然后分别使用map的API来进行相应的map增删改查操作就行了。

增/改:put(K key,V value),这里可以初始化用户名为key,电话号码为value,前提是用户名要没有重复的,如果是相同的用户名会覆盖前一个,可以当做改功能来使用
删:remove(Object key)根据键,删值,如果之前的key存的用户名,那么这里就是根据用户名删值
查:get(Object key)根据键查值,相当于根据用户名查电话号码

❺ 推荐几个编程题库

http://acm.sgu.ru
SGU大学网站,算法性很强的,推荐
http://acm.timus.ru
URAL大学网站,做的人很多
http://train.usaco.org
USACO,USA网站,有很多大牛
http://acm.pku.e.cn
北大网站,中文讨论
其他还有很多,如西班牙的,浙江的,湖南的,同济的都很好
很快提高编程思维与水平

❻ C语言编程题

1.
#include<stdio.h>
int calc(int profit)
{
float sal=500;
if(profit<=2000&&profit>1000) sal+=(0.1*profit);
else if(profit>2000&&profit<=5000) sal+=(0.2*profit);
else if(profit>5000&&profit<=10000) sal+=(N*profit); //估计你这里少了5000-10000的提成率,补上后只需要把N换成提成率就ok了

else if(profit>10000) sal+=(0.25*profit);
return sal;
}
int main()
{
int p;
printf("enter profit:\n");
scanf("%d",&p);

printf("result:%d\n",calc(p));
return 0;
}
2.
#include<stdio.h>
int main()
{
int i;
for(i=200;i<=300;++i)
if(!i%7) printf("%d\n",i);
return 0;
}
3.这个题我估计是2n-1,奇数相加,楼主应该是多打了括号
#include<stdio.h>
int calc(int n)
{
int i,sum=0;
for(i=1;i<=n;++i)
sum+=(2*i-1);
return sum;
}
int main()
{
int n;
printf("enter n:\n");
scanf("%d",&n);

printf("result:%d\n",calc(n));
return 0;
}

4.
这道题楼主应该是想从大到小排序输出吧
我用的是冒泡排序
#include<stdio.h>
int main()
{
int a[10],i,j;
int t;
printf("enter number(10):\n");
for(i=0;i<10;++i)
scanf("%d",a+i);
for(j=9;j>0;--j) //冒泡排序
for(i=0;i<j;++i)
if(a[i]>a[i+1])
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=9;i>=0;--i)
printf("%d\n",a[i]);
return 0;
}

程序已测试,网络不让贴图,我就不粘了,有问题请追问
各位大神,不要,求你们了……

❼ 一个编程题

#include "stdio.h"
#include "conio.h"
#define nmax 50
main()
{
int i,k,m,n,num[nmax],*p;
printf("please input the total of numbers:");
scanf("%d",&n);
p=num;
for(i=0;i<n;i++)
*(p+i)=i+1;
i=0;
k=0;
m=0;
while(m<n-1)
{
if(*(p+i)!=0) k++;
if(k==3)
{
*(p+i)=0;
k=0;
m++;
}
i++;
if(i==n) i=0;
}
while(*p==0) p++;
printf("%d is left\n",*p);
getch();
}

❽ 一个C语言编程题

这个问题可以分为3部分

1、输入一个字符串,将其格式化的储存在一个数组中,以方便的记录表达式中数和各个符号的出现顺序
约定在数组中记录时,每个数或符号用两个整数来记录
第一个整数记录该位是什么东西,0表示是一个数,1表示是括号,2表示反括号,3、4、5、6分别表示乘除加减号
如果该位是一个数,那么第二个整数记录着个数的具体取值,否则记录该位的符号的ASCII码
比如字符串"(1-23)"会被转化成二位数组{ {1,'('} , {0,1} , {6,'-'} , {0,23} , {2,')'}}
这个转化过程每什么技巧性,对原字符串各位顺次判断并处理即可
原先的字符串中可能出现一元运算符正号'+'和负号'-',为了处理方便,一律在其前面加个0,改写成"0+..."或者"0-..."
另外为了之后转化逆波兰表达式方便,处理过程中会在转化出的数组的首尾一律添加一对括号

2、将之前所提到的格式数组转化为逆波兰表达式
约定依然用二位数组记录一个逆波兰表达式,并且格式与之前的数组相同,除了没有括号以外
比如逆波兰表达式 1 2 - 35 +,会被记录成{ {0,1} , {0,2} , {6,'-'} , {0,35} , {5,+}}
转化时,需要用一个栈
具体转化操作如下:
顺次处理格式数组的每一位,对其作判断
如果该位是一个数或者是括号'(',,将其入栈
如果该位是乘号'*'或者除号'/',不断进行出栈操作直到栈顶元素是个括号'('或者加号'+'或者减号'-',然后将这个乘号或者除号入栈
如果该位是加号'+'或者减号'-',不断进行出栈操作直到栈顶元素是个括号'(',然后将这个加号或者减号入栈
如果该位是反括号')',那么不断进行出栈操作直到有一个括号'('出栈

在上述操作中,所有的出栈元素,除了括号'('以外,都被顺次添加到所要生成的逆波兰表达式的末尾
这样就转化出了一条逆波兰表达式

3、对逆波兰表达式求值
求值时,也需要用到一个栈
求值步骤如下:
顺次处理逆波兰表达式的每一位,对其作判断
如果该位是一个数,将这个数入栈
如果该位是一个运算符,那么连续进行两次出栈操作,可以得到栈顶的两个元素,对这两个元素用该位的运算符做运算,将所得的结果入栈
比如,如果当时栈顶元素是3,次栈顶的元素是2,运算符是减号'-',那么连续两次出栈得到3和2两个元素,再将2-3的运算结果1入栈
注意有些运算符(减号和除号)不符合交换律,因此运算时必须是次栈顶元素在前、栈顶元素在后,顺序不能反

当每一位都处理完了之后,只要输入的是一个合法的逆波兰表达式,必然栈中只剩下一个元素,这个元素就是逆波兰表达式求值的结果

源代码如下:

#include <stdio.h>
#include <ctype.h>

void transform(char *str,int a[][2],int *n)
//将输入的字符串转化为格式化的数组以记录输入的表达式,str为输入的字符串,a为目标数组,n记录数组a的大小
{
int i;
*n=1;
a[0][0]=1;
a[0][1]='(';//在表达式首添加一个括号
for (i=0;str[i];)
{
if (isdigit(str[i]))
{
a[*n][0]=0;
a[*n][1]=0;
while (isdigit(str[i]))
{
a[*n][1]=a[*n][1]*10+str[i]-'0';
i++;
}
}
else
{
if (str[i]=='(') a[*n][0]=1;
else if (str[i]==')') a[*n][0]=2;
else if (str[i]=='*') a[*n][0]=3;
else if (str[i]=='/') a[*n][0]=4;
else if (str[i]=='+' || str[i]=='-')
{
if (i==0 || (!isdigit(str[i-1]) && str[i-1]!=')'))
{
a[*n][0]=0;
a[*n][1]=0;
(*n)++;
}
if (str[i]=='+') a[*n][0]=5;
else a[*n][0]=6;
}
a[*n][1]=str[i];
i++;
}
(*n)++;
}
a[*n][0]=2;
a[*n][1]=')';//在表达式尾添加一个反括号
(*n)++;
}

void poland(int a[][2],int n,int p[][2],int *m)
//将格式化数组转化为逆波兰表达式,a为输入的数组,n为其长度,p为输出逆波兰表达式的目标,m记录逆波兰表达式的长度
{
int i;
int stack[1000];//转化所用的栈
int depth;//栈的深度
depth=0;
*m=0;
for (i=0;i<n;i++)
{
if (a[i][0]==0) stack[depth++]=i;
else if (a[i][0]==1) stack[depth++]=i;
else if (a[i][0]==2)
{
while (a[stack[depth-1]][0]!=1)
{
depth--;
p[*m][0]=a[stack[depth]][0];
p[*m][1]=a[stack[depth]][1];
(*m)++;
}
depth--;
}
else if (a[i][0]==3 || a[i][0]==4)
{
while (a[stack[depth-1]][0]==0 || a[stack[depth-1]][0]==3 || a[stack[depth-1]][0]==4)
{
depth--;
p[*m][0]=a[stack[depth]][0];
p[*m][1]=a[stack[depth]][1];
(*m)++;
}
stack[depth++]=i;
}
else if (a[i][0]==5 || a[i][0]==6)
{
while (a[stack[depth-1]][0]!=1)
{
depth--;
p[*m][0]=a[stack[depth]][0];
p[*m][1]=a[stack[depth]][1];
(*m)++;
}
stack[depth++]=i;
}
}
}

void print_poland(int p[][2],int m)
//打印逆波兰表达式,p为逆波兰表达式,m为表达式长度
{
int i;
for (i=0;i<m;i++)
{
if (p[i][0]==0) printf("%d",p[i][1]);
else printf("%c",p[i][1]);
}
putchar('\n');
}

double evaluate(int p[][2],int m)
//对逆波兰表达式求值,p为逆波兰表达式,m为表达式长度
{
double stack[1000];//求值所用的栈
int depth;//栈的深度
int i;
depth=0;
for (i=0;i<m;i++)
{
if (p[i][0]==0) stack[depth++]=p[i][1];
else
{
double a,b;
b=stack[--depth];
a=stack[--depth];
if (p[i][0]==3) stack[depth++]=a*b;
else if (p[i][0]==4) stack[depth++]=a/b;
else if (p[i][0]==5) stack[depth++]=a+b;
else stack[depth++]=a-b;
}
}
return stack[0];
}

int a[1000][2];
int n;
int p[1000][2];
int m;

main()
{
transform("5*(8-2)+9",a,&n);
poland(a,n,p,&m);
print_poland(p,m);
printf("The result of the expression is %lf\n",evaluate(p,m));
return;
}

❾ 编程问题

棋子如果只能向右或向下走,就是动态规划题

但是题目要求是棋子可以向上下左右四个方向走,那么就不好动态规划了,因为无法确定一个前后的顺序。

可以这么做,把m*n个格子,看成m*n个点,相邻点之间有路,以下一点的值为该路权值,然后计算最短路。
上面的方法还可以优化,可以把连在一起的值为0的点合并成一个点,这样可以减少点的个数。

至于最短路,稍网络一下就有好多例程,一种是dijk啥啥啥的那个名字(总没记清)的算法,一种是破圈法,都可以。

阅读全文

与编程题相关的资料

热点内容
php备案号 浏览:984
php视频水印 浏览:163
怎么追程序员的女生 浏览:483
空调外压缩机电容 浏览:77
怎么将安卓变成win 浏览:457
手机文件管理在哪儿新建文件夹 浏览:722
加密ts视频怎么合并 浏览:774
php如何写app接口 浏览:802
宇宙的琴弦pdf 浏览:395
js项目提成计算器程序员 浏览:944
pdf光子 浏览:834
自拍软件文件夹名称大全 浏览:328
程序员留学移民 浏览:52
梁中间部位箍筋加密区 浏览:119
频谱分析pdf 浏览:752
乐2怎么升级安卓70 浏览:174
java中获取日期 浏览:508
单片机74hc245 浏览:274
美国历史上的总统pdf 浏览:753
程序员脱单实验室靠不靠谱 浏览:460