当前位置:首页 » 编程语言 » 华南农业大学c语言上机实验
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

华南农业大学c语言上机实验

发布时间: 2022-02-06 08:41:03

❶ 华南农业大学c语言上机网址,请问谁知道啊

找该校的学生

❷ 华南农业大学新生c语言竞赛题--约瑟夫环问题

/*
*File:Josephus.cpp
*Author:YangWudi
*Version 1.3b
*------------------------------------------
*这个程序主要用双向循环链表来实现约瑟夫问题 。
*/

#include <iostream>
#include <cstdio>

using namespace std;

typedef int ElementType;

struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;
typedef PtrToNode Position;
struct Node
{
ElementType element;
Position prior;
Position next;
};

void Delete(Position P);
Position Forward(Position address, int step);

int main()
{
List L=NULL;
int N, M, num;

cout << "Please enter the N and M" << endl;

while(1){
cin >> N >> M;
num = N;
if(N>0&&M>=0)break;//判断N和M是否合法
cout << "Don't you know the value input should fit N>0&&M>=0?!" << endl
<< "Please enter N and M again:";
}

L = (List)malloc(sizeof(Node));
Position temp=L;

for(int i=1;;i++){
temp->next = (List)malloc(sizeof(Node));
temp->element = i;
if(i==N)break;
temp->next->prior = temp;
temp = temp->next;
}

free(temp->next);//将多余分配的内存释放
temp->next = L;
L->prior = temp;

Position position=L, pause;

while(num!=1){
pause = Forward(position, M%num);//传递完毕后的位置,也就是应该删除的位置
position = pause->next;//下次开始时的位置

//没有打印语句可以减少运行时间,但数据规模小的时候加上可以清晰的反映删除的步骤,这个语句是否加上可选
//cout << "Delete-" << pause->element << " ";
Delete(pause);
num--;
}

cout << endl << "Winner is:" << position->element << endl;
system("pause");
return 0;
}

/*Delete P from a list*/

void Delete(Position P)
{
P->next->prior = P->prior;
P->prior->next = P->next;
//free(P);//不释放内存为了提高运行效率,不过如果内存不够的话,还是应该调用free函数,所以这个地方可选
return ;
}

/*将现在位置的节点按照应该移动的步数向前移动,并且返回移动后所在位置的指针*/

Position Forward(Position address, int step)
{
Position temp=address;

for(int i=0; i<step; i++){
temp = temp->next;
}
return temp;
}

❸ 用C语言设计问卷调查系统,求代码,华南农业大学软件工程大一课程设计,华农做过这题目的师兄师姐帮帮忙

C语言设计问卷调查系统这方面的我可以。

❹ 华南农业大学新生c语言竞赛题--代码等式

好像比较麻烦,回去考虑一下

❺ 华南农业大学新生c语言竞赛题--韩信点兵

#include"stdio.h"
#include"math.h"
main()
{
int
a,b,c,d,e,f,g,h,A,B,C,D,E,F,G,H;
long
i,sum=0;
scanf("%d
%d
%d
%d
%d
%d
%d
%d",&A,&B,&C,&D,&E,&F,&G,&H);
scanf("%d
%d
%d
%d
%d
%d
%d
%d",&a,&b,&c,&d,&e,&f,&g,&h);
for(i=2;i<pow(2,63);i++)
{
if(i%A==a&&i%B==b&&i%C==c&&i%D==d&&i%E==e&&i%F==f&&i%G==g&&i%H==h)
{
sum=i;
break;
}
}
printf("%ld",sum);
}
师弟啊,你们好幸运啊,我们去年来华农的时候,没可没有这么好的机会有这些竞赛哦,希望你好好把握!
其实这些体都不是很难,只是你们以前没接触过C语言而一时适应不了吧……其实每个初学C语言的人都认为好像有学了,但是好像不懂,其实你慢慢会懂得,你一直在进步,只是没感觉出来而已……
我建议你如果真的想学好C语言,要多多上机。学校不个带电脑不是借口,东区实验楼三楼的机子在星期一至星期五都是免费开放的,给你们上机做实验足够了哦,希望你们好好珍惜……
呵呵,可能说太多了吧,最后跟你说一下我自己,我是信息学院的,06级,QQ115881379,有什么问题可以找我!

❻ 华南农业大学新生c语言竞赛题--分珠

这道题其实刚开始看吓人。。。往后一看就乐了,这么小的数据范围,直接搜索就可以。下面是程序

#include <stdio.h>

struct Edge
{
      int x, y;
};

Edge edge[ 10 ];
int n, m, hide[ 10 ][ 10 ], w[ 10 ], Min_c, sum;

void init( )
{
      int i, j, a, b;
      scanf("%d%d", &n, &m);
      sum = 0;
      for ( i = 0; i < n; i++ )
      {
            scanf("%d", &w[ i ]);
            sum += w[ i ];
            for ( j = 0; j < n; j++ )
                  hide[ i ][ j ] = 0;
      }
      for ( i = 0; i < m; i++ )
      {
            scanf("%d%d", &a, &b);
            edge[ i ].x = a - 1;
            edge[ i ].y = b - 1;
            hide[ a - 1 ][ b - 1 ] = 1;
            hide[ b - 1 ][ a - 1 ] = 1;
      }
      Min_c = sum;
}

int check( )
{
      int visit[ 10 ], i, c, t = 0, q[ 10 ], head = 0, tail = 0;
      for ( i = 0; i < n; i++ )
            visit[ i ] = 1;
      visit[ 0 ] = 0;
      q[ 0 ] = 0;
      t = w[ 0 ];
      while ( tail >= head )
      {
            c = q[ head++ ];
            for ( i = 0; i < n; i++ )
                  if ( hide[ c ][ i ] && visit[ i ] )
                  {
                        visit[ i ] = 0;
                        q[ ++tail ] = i;
                        t += w[ i ];
                  }
      }
      if ( tail == n - 1 )
            return 0;
      return t;
}

int mabs( int x )
{
      if ( x < 0 )
            return -x;
      return x;
}

void cut( int step )
{
      int t = check( );
      if ( t && mabs( sum - t * 2 ) < Min_c )
            Min_c = mabs( sum - t * 2 );
      if ( step >= m )
            return ;
      int i, a, b;
      for ( i = step; i < m; i++ )
      {
            a = edge[ i ].x;
            b = edge[ i ].y;
            hide[ a ][ b ] = hide[ b ][ a ] = 0;
            cut( i + 1 );
            hide[ a ][ b ] = hide[ b ][ a ] = 1;
      }
}

void print( )
{
      printf("%d\n", Min_c);
}

int main( )
{
      init( );
      cut( 0 );
      print( );
      return 0;
}

❼ 华南农业大学新生c语言竞赛题--K尾相等数

解:对于一个数,它的幂是无穷多个的,但是末尾三位数只有1000种。这表明当第一次重复出现大于等于1000的末尾三位数时,这就是我们要求的M和N了.

源代码:

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define LEN 1000

void main(){
int k,i,tail[LEN],m,flag;
while(1){
scanf("%d",&k); //输入K
if(k==1) exit(0); //如果K等于1则退出
flag=0; //初始化
i=m=1; //m为当前幂的次数,i等于k的m次幂
memset(tail,0,sizeof(int)*LEN);
/* 当K大于1000时我们只要对它的末尾三位数进行幂运算,
* 这样不影响结果,但减少了幂运算后值的大小
*/
if(k>=LEN) {
k=k%LEN;
flag=1;
}
while(1){
i*=k;
if(i>=LEN || flag==1){
if(tail[i%LEN]==0) tail[i%LEN]=m; //这个末尾三位数是第一次出现
else {tail[i%LEN]+=m;break;} //末尾三位数出现了第二次,退出循环
flag=1;
}
if(i>=LEN) i=i%LEN;
m++;
}
printf("%d ",tail[i%LEN]);
}
}

❽ 华南农业大学新生c语言竞赛题--三角形

简单的数学问题

#include <stdio.h>
#include <math.h>

void work( )
{
      int a, i, j;
      scanf("%d", &a);
      for ( i = ( a * a + 1 ) >> 1; i > a; i-- )
      {
            j = int( sqrt( i * i - a * a ) );
            if ( j * j + a * a == i * i && j < i )
                  printf("%d,%d\n", i, j);
      }
      for ( i = a - 1; i > 1; i-- )
      {
            j = int( sqrt( a * a - i * i ) );
            if ( j * j + i * i == a * a && j < i )
                  printf("%d,%d\n", i, j);
      }
}

int main( )
{
      int n, i;
      scanf("%d", &n);
      while ( n-- )
      {
            work( );
            if ( n )
                  printf("\n");
      }
      return 0;
}

❾ 华农c语言上机综合A答案

请问这位同学所讲的华农,究竟是指华中农业大学(武汉)、华南农业大学(广州)还是华南热带农业大学(儋州)呢?国内叫华农的高校随便数都有3间吖。

华南农业大学校徽:

❿ 华南农业大学新生c语言竞赛题--破密

没什么时间 算法写的不好 起码功能还是实现了
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int BreakKey(char *keyString, char *buf)
{

int PreMkey = *(keyString+0);
int CurMkey = *(keyString+1);

char temp[2] = {0};
char pString[100] = {0};

for(int i=32; i<127; i++)
{
if(CurMkey == (((PreMkey-32) + (i-32))%96 +32))
{
memcpy(temp, &i, 1);
strcat(buf, temp);
// printf("%s\n", buf);
}
}

memcpy(pString, keyString+1, strlen(keyString)-1);

if( strlen(pString) > 0 )
BreakKey(pString, buf);

return 0;
}

int main()
{
char stringkey[100] = {0};
char buf[100] = {0};

printf("input key\n");
scanf("%s", stringkey);

memcpy(buf, stringkey, 1);

BreakKey(stringkey, buf);

printf("%s\n", buf);
return 0;
}