❶ c语言 3454--最大值III
尝试过用char数组输入方式吗?直接比较字符,用来排序方便多了,yes,输入输出都方便多了。
但如果你觉得程序上没有问题,就考虑以下我说的。
原文:
输出
每组输出占1行,每行为一个正整数,即次序打乱重新组合一个新的三位整数。
次序打乱,新的,请注意这两个个词语
你能通过这次例子吗
输入:321
或许你认为答案是输出321
但有可能是312。。。。因为要次序打乱,,输出321可没有打乱次序还是原来的
你是在做ACM吗?ACM就是有点折磨人,往往一个小的输入输出都会出错
你的输入太麻烦了
只要读取一个数,譬如
int a
cin>>a;足以
这个a就是三位数了吧
❷ 求乘积最大C语言源程序
/*定义x为N长度的数字,y为拆分多少段,z为数字长度,temp1,temp2,temp3为中间变量。max为最大值*/
int x,y,z=1,temp1,temp2,temp3,max;
pirntf("请输入数字:");
scanf("%d",&x);
temp3=x;
printf("请输入你要拆分多少段:");
scanf("%d",&y);
//计算数字x的长度
for(;1;)
{
x/=10;
if(x=0)
break;
z++;
}
switch(y)
{
case 1:z--;break;
case 2:z-=2;break;
case 3:z-=3;break;
case 4:z-=4;break;
case 5:z-=5;break;
case 6:z-=6;break;
}
for(int i=1;i<=z;i++)
{
temp1=temp3/(pow(10,i));
temp2=temp3%(pow(10,i));
if(i=1)
max=temp1*temp2;
if(max<temp1*temp2)
max=temp1*temp2;
}
printf("最大值为:%d",max);
貌似应该是这个了,我在网吧做的,没有控制台程序,验证不了我解释一下:“如你所说,先输入一个N长度的值,要先算出他的长度,好比15,他的长度是2(代码为前面FOR循环),switch语句的内容表达的意思为:不管要拆分多少段,K*K+1值才为最后答案,那么K和K+1的值要尽可能的大,那么前面的值就应该尽可能的小,最小的当然是各位数,z的作用为最后的FOR循环中的圈数,我用的方法类似于冒泡排序,从最后一位开始循环计算,最后循环判断用了一个pow函数,这个函数要在math.h头文件下才能使用,所以在开头+ 入#include <math.h>,如果还要输出在哪里分段的话,你可以考录下载循环里面+个计数器类似于数组,记录下temp1和temp2的值,输出出来就OK了。
❸ C语言取余符号怎么用比如:1%12以及3%8结果是多少
C语言的取余运算符 的用法:将操作数放在取余符号的两边,例如:
#include<stdio.h>
int main()
{ int a,b;
a=1%12;
b=3%8;
printf("%d %d",a,b);
return 0;
}
1%12=1 ,3%8=3。
(3)成信大C语言p312扩展阅读:
取模运算:a % p(或a mod p),表示a除以p的余数。
模p加法:(a + b) % p ,其结果是a+b算术和除以p的余数,也就是说,(a+b) = kp +r,则(a + b) % p = r。
模p减法:(a-b) % p ,其结果是a-b算术差除以p的余数。
模p乘法:(a * b) % p,其结果是 a * b算术乘法除以p的余数。
说明:
1,同余式:正整数a,b对p取模,它们的余数相同,记做 a ≡ b % p或者a ≡ b (mod p)。
2,n % p得到结果的正负由被除数n决定,与p无关。例如:7%4 = 3, -7%4 = -3, 7%-4 = 3, -7%-4 = -3(在java、C/C++中%是取余,在python是模运算,此处%按取余处理)。
参考资料来源:网络-模运算
❹ C语言指针相关的题
对于编译器,printf是自右至左编译
#include<stdio.h>
main()
{int k=8;
printf("%d,%d
",k++,k);
}
输出8,9
#include<stdio.h>
main()
{int k=8;
printf("%d,%d
",k,k++);
}
输出9,8
printf语句里如果有表达式的话,是从右向左开始运算的,输出的时候是从左向右输出。
printf("%d,%d
",k++,k);先执行k,再执行k++。输出的时候先输出k++再输出k的结果
printf("%d,%d
",k,k++);先执行k++再执行k,输出的时候先输出k再输出k++的结果
❺ C语言 全排列······晕
首先,我下面的叙述是建立在楼主明白什么是递归调用的基础上的。对递归毫无了解的话,请先看看网络。
然后,进入正题。
第一个return:就是返回这个函数的调用者,这个函数执行完毕。这是一个if判断,当带排列的数列长度为1时,只有一种可能,输出,则排列结束,返回。长度不只1的时候,执行以下for。
未完待续
接着讲这个
for(i=0;i<n;i++){----------这个循环到底怎么个看法和顺序?
anagram(d,n-1); 怎么输出的??(这块都不明白)
temp=d[0];
for(j=1;j<=n-1;j++){
d[j-1]=d[j];
}
d[n-1]=temp;
}
先讲这个算法的思想,比如对abc进行全排列,那么可以看做:ab的全排列+c和ac的全排列+b和bc的全排列+a三个的组合。然后再细化,ab的全排列可以看出a的全排列+b,和b的全排列+a两个的组合。当只有一个时,就是调用if=1的那个情况,直接print。不是1的时候,就是递归调用,进行不断地分解。
这是算法思想,未完待续
两个for循环,里面的for执行一边后就是把数组的元素挨个往前挪一位,第一位到最后位,然后对前n-1位进行全排列,递归进行。从上面的算法思想中我们可以看出这样的目的和意义,就是一个类似对上面abc的分解过程,一次a到最后排bc,一次b到最后排ac,一次c到最后排ab。
就先说这么多吧。纯手打,望采纳!有问题可以补充,或者网络hi我。
我帮你改了一下代码,加了几行printf,希望可以解决你的那几个问题:
#include<stdio.h>
#define NUM 3
void anagram(int[],int);
void print(int[]);
void main()
{
int d[NUM];
int i;
for(i=0;i<NUM;i++)
d[i]=i + 1;
printf("初始化后的数组顺序是:");
print(d);
anagram(d,NUM);
}
void anagram(int d[],int n)
{
int i,j,temp;
int p;
if(n==1){
print(d); //打印函数
return;//-------------return返回哪?
} // 和下面的for怎么联系起来?
for(i=0;i<n;i++){//----------这个循环到底怎么个看法和顺序?
printf("\ni = %d,n = %d, 准备调用aragram(d,%d)\n",i,n,n-1);
printf("这时候的数组顺序是:");
print(d);
anagram(d,n-1); // 怎么输出的??(这块都不明白)
temp=d[0];
for(j=1;j<=n-1;j++){
d[j-1]=d[j];
}
d[n-1]=temp;
}
}
void print(int d[]){
int i;
for(i=0;i<NUM;i++){
printf("%d",d[i]);
}
printf("\n");
}
PS:
改动:1、print函数原来是逆序输出,改成正序输出,有利于理解;2、数组原来初始化为321,改为123,有利于理解。就改了这两个地方,加了一些printf。
你可以运行一下。
输出结果:
初始化后的数组顺序是:123
i = 0,n = 3, 准备调用aragram(d,2)
这时候的数组顺序是:123
i = 0,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:123
123
i = 1,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:213
213
i = 1,n = 3, 准备调用aragram(d,2)
这时候的数组顺序是:231
i = 0,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:231
231
i = 1,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:321
321
i = 2,n = 3, 准备调用aragram(d,2)
这时候的数组顺序是:312
i = 0,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:312
312
i = 1,n = 2, 准备调用aragram(d,1)
这时候的数组顺序是:132
132
请按任意键继续. . .
❻ 想知道成信院计算机学院的名师(成都信息工程学院)
我就是成都信息工程学院计算机学院毕业的,名师说实话,说不上有多名,但是张钟澍老师还是很不错的,不过年龄大了,不晓得还在学校不。其他老师,比如廖德清教C++的,也不错。
❼ 关于电子信息工程(成信的)
专业就业:作为本专业的2010级学长,切身体会,学起来有点难度,特别需要你的耐心和毅力,还要经常动手焊接啊,设计电路之类的。专业分为电子设计和通信工程两个方向。电子设计主要是集成半集成电路的设计,精简,维护等,发明创造性要求较高,发展潜力好;通信工程主要是对一些已有设备的维护,维修,检测,安装等,发明创造要求较低,实用性强,好上手。
进入实验室:没有什么具体的硬性条件,先是按兴趣报名,然后进行一段时间的培训,在进行选拔,跟你的学习成绩没有什么很大关联。因为实验室主要看中你的实际操作动手能力,对理论要求不高。实验室设施还算不错,关键是分为较好,一级一级的学长学姐往下带,有一种传承。
❽ c语言建立动态链表(谭浩强第四版p312)
struct Student *p1,*p2 这只是指针,是32位长的变量,存的是地址,还没分配空间呢。。